.htaccess 在 Laravel 和 Forge 上重定向
.htaccess redirects in Laravel and on Forge
将旧项目迁移到基于 Laravel 的新项目时,我们需要将 (301 Header) 条旧路由重定向到新路由,例如
/index.php?page=shop ==> /shop
/index.php?category=abc&product_id=123 ==> /abc/item-123
为此,我们准备了一个适合旧项目的 .htaccess 文件。但是当我们部署新项目并更改域DNS时,htaccess也需要在新文件夹中。
在 Laravel 中,我们确实有 /public/.htaccess,但是,添加我们的 .htaccess 部分将无法与 Laravel Forge 一起使用。这是一个简单的 .htaccess 文件,如下所示:
<IfModule mod_rewrite.c>
# Enable Rewrite Engine
RewriteEngine On
RewriteBase /
# index.php?page=user&sub_page=settings
RewriteCond %{QUERY_STRING} ^page=user&sub_page=settings$
RewriteRule ^index\.php$ /users/notifications/permissions/edit [R=301,NC,L,QSD]
(... and so on)
</IfModule>
所以现在我们想知道:我们如何让它工作,它会根据 Laravel 将旧路由转发到同一项目中的新路由?
Laravel Forge 使用 nginx.conf 文件(您可以在 Forge 中配置)而不是 .htaccess 文件。
您可以使用 nginx 参考重新创建您的设置:https://nginx.org/en/docs/。您应该查看以下部分:位置和重定向。
希望对您有所帮助!
将旧项目迁移到基于 Laravel 的新项目时,我们需要将 (301 Header) 条旧路由重定向到新路由,例如
/index.php?page=shop ==> /shop
/index.php?category=abc&product_id=123 ==> /abc/item-123
为此,我们准备了一个适合旧项目的 .htaccess 文件。但是当我们部署新项目并更改域DNS时,htaccess也需要在新文件夹中。
在 Laravel 中,我们确实有 /public/.htaccess,但是,添加我们的 .htaccess 部分将无法与 Laravel Forge 一起使用。这是一个简单的 .htaccess 文件,如下所示:
<IfModule mod_rewrite.c>
# Enable Rewrite Engine
RewriteEngine On
RewriteBase /
# index.php?page=user&sub_page=settings
RewriteCond %{QUERY_STRING} ^page=user&sub_page=settings$
RewriteRule ^index\.php$ /users/notifications/permissions/edit [R=301,NC,L,QSD]
(... and so on)
</IfModule>
所以现在我们想知道:我们如何让它工作,它会根据 Laravel 将旧路由转发到同一项目中的新路由?
Laravel Forge 使用 nginx.conf 文件(您可以在 Forge 中配置)而不是 .htaccess 文件。
您可以使用 nginx 参考重新创建您的设置:https://nginx.org/en/docs/。您应该查看以下部分:位置和重定向。
希望对您有所帮助!