📅  最后修改于: 2023-12-03 14:52:23.384000             🧑  作者: Mango
在 Laravel 8 中,我们可以使用 Web 服务器(例如 Apache 或 Nginx)的重写规则来将 public
目录从 URL 中删除。这样可以提高 URL 的美观性和保护应用程序的安全性。
以下是一些步骤和代码片段来实现这个过程。
先决条件:
php artisan serve
命令来运行应用程序。.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
目录前缀。
如果你正在使用 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 更加美观和易于记忆,并且可以提高应用程序的安全性。