📜  如何在 laravel 8 中从 url 中删除 public - PHP (1)

📅  最后修改于: 2023-12-03 14:52:23.384000             🧑  作者: Mango

如何在 Laravel 8 中从 URL 中删除 public

在 Laravel 8 中,我们可以使用 Web 服务器(例如 Apache 或 Nginx)的重写规则来将 public 目录从 URL 中删除。这样可以提高 URL 的美观性和保护应用程序的安全性。

以下是一些步骤和代码片段来实现这个过程。

先决条件:

  1. 你已经安装了 Laravel 8,并且正在使用 php artisan serve 命令来运行应用程序。
  2. 你已经设置了 Web 服务器(例如 Apache 或 Nginx)来服务于你的应用程序。
第一步:在 Laravel 8 中配置 .htaccess 文件

在 Laravel 8 中,我们可以使用 .htaccess 文件来控制 Web 服务器的重写规则。在 public 目录下创建一个 .htaccess 文件,并添加以下代码:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

这个规则将重写所有的 URL 到 index.php 文件中,并在 URL 中添加了一个 index.php/ 前缀。这会使得我们的 URL 不再需要 public 目录前缀。

第二步:在 Web 服务器中配置重写规则

如果你正在使用 Apache Web 服务器,你需要在你的虚拟主机配置中添加以下规则:

<Directory "/path/to/your/laravel/app/public">
    AllowOverride All
</Directory>

RewriteEngine On
RewriteRule ^(.*)$ /public/$1 [L]

第一行规定了你的 Laravel 应用程序的公共目录路径。第二行是一个重写规则,将所有的 URL 重写到 public 目录中,并且从 URL 中删除 public 路径。

如果你在使用 Nginx Web 服务器,你需要在你的虚拟主机配置中添加以下规则:

location / {
    try_files $uri $uri/ /index.php?$query_string;
}

这个规则将所有的 URL 重写到 index.php 文件中。由于我们已经在 .htaccess 文件中重写了所有的 URL,因此这个规则可以从 URL 中删除 public 目录前缀,同时保留 Laravel 应用程序的路由。

结论

这就是在 Laravel 8 中从 URL 中删除 public 目录的方法。重写规则可以让我们的 URL 更加美观和易于记忆,并且可以提高应用程序的安全性。