将 .htaccess 转换为 Nginx.conf 重写规则
Convert .htaccess to Nginx.conf Rewrite rule
我有这个规则,它在 .htaccess 和 Apache 中按预期工作
RewriteRule ^jobs/([A-Za-z0-9_]+)/?([A-Za-z0-9_-]+)?$ index.php?link1=jobs&page=&resource_id= [QSA]
它将重写 URL http://domain.test/jobs/createcv 以便 PHP $_GET 看起来像这样:
现在我想用 NGINX 实现同样的效果 URL 但它不起作用。
规则:rewrite ^/jobs/([A-Za-z0-9_]+)/?([A-Za-z0-9_-]+)$ /index.php?link1=jobs&page=&resource_id=;
但是我得到了这个奇怪的结果
array(3) { ["link1"]=> string(7) "jobs" ["page"]=> string(7) "createc" ["resource_id"]=> string(1) "v" }
提前致谢
在从 Apache 迁移到 NGINX 的过程中重写规则被破坏,因为它在第二个捕获组之后缺少一个问号。
在重写规则中添加 ?
,它应该可以工作:
location /jobs {
rewrite ^/jobs/([A-Za-z0-9_]+)/?([A-Za-z0-9_-]+)?$ /index.php?link1=jobs&page=&resource_id=;
}
如果第二组是可选的,那么 createcv
的 v
就不会像你描述的那样被意外“吃掉”。
我有这个规则,它在 .htaccess 和 Apache 中按预期工作
RewriteRule ^jobs/([A-Za-z0-9_]+)/?([A-Za-z0-9_-]+)?$ index.php?link1=jobs&page=&resource_id= [QSA]
它将重写 URL http://domain.test/jobs/createcv 以便 PHP $_GET 看起来像这样:
现在我想用 NGINX 实现同样的效果 URL 但它不起作用。
规则:rewrite ^/jobs/([A-Za-z0-9_]+)/?([A-Za-z0-9_-]+)$ /index.php?link1=jobs&page=&resource_id=;
但是我得到了这个奇怪的结果
array(3) { ["link1"]=> string(7) "jobs" ["page"]=> string(7) "createc" ["resource_id"]=> string(1) "v" }
提前致谢
在从 Apache 迁移到 NGINX 的过程中重写规则被破坏,因为它在第二个捕获组之后缺少一个问号。
在重写规则中添加 ?
,它应该可以工作:
location /jobs {
rewrite ^/jobs/([A-Za-z0-9_]+)/?([A-Za-z0-9_-]+)?$ /index.php?link1=jobs&page=&resource_id=;
}
如果第二组是可选的,那么 createcv
的 v
就不会像你描述的那样被意外“吃掉”。