将 .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=;
}

如果第二组是可选的,那么 createcvv 就不会像你描述的那样被意外“吃掉”。