Nginx rewrite 等同于 Apache RewriteRule,它将 URL 参数转换为 QueryStrin



我正在执行从Apache服务器到Nginx的迁移,并错过了一个执行重写的.htaccess文件:

RewriteRule ^(.*)$ routes.php?params=$1 [NC,QSA]

例如,此终结点example.com/api/v1/param1/param2/param3将被重写为https://example.com/api/v1/routes.php?params=/param1/param2/param3

在我重新尝试迁移之前,有人可以确认这是 Nginx 的正确等效项吗?

rewrite "(?i)^(.*)$" routes.php?params=$1

这是它在配置文件中的使用方式/api/v1因为这是唯一需要重写的路径?

location /api/v1 {
  rewrite "(?i)^(.*)$" routes.php?params=$1
} 

更新

将其添加到Laravel Forge中的conf文件中似乎只会破坏应用程序并阻止显示任何视图。 相反,它说This site can’t be reached example.com refused to connect.

所有

nginx URI 都以前导/开头,并且正则表达式在追加参数列表之前不会尝试删除/api/v1/前缀。

尝试:

location /api/v1 {
    rewrite ^/api/v1(/.*)$ /api/v1/routes.php?params=$1 last;
}

最新更新