Nginx:如何将 URL 子目录重写为查询参数?

Nginx: how do I rewrite a URL subdirectory to a query parameter?

我正在尝试在 WordPress 网站 运行 Nginx 中重写一个 URL 以便将最后一个子目录转换为 GET 参数:

http://mydomain/property/aid/1234/ to http://mydomain/property/?aid=1234/

我尝试在 WordPress 中使用 add_rewrite_rule,但没有成功,因为它没有创建新的 $_GET 条目。

然后我尝试了以下 Nginx 规则:

rewrite ^(/property/.*)/aid/(.*)$ //?aid= break;

好像一点效果都没有。

有什么建议吗?

假设文档根目录是/www/yourproject/public。然后 PHP-FPM 的配置可能如下所示:

rewrite "^/property/aid/([0-9]+)$" /property/?aid= break;

location /property/ {
  root            /www/yourproject/public;
  fastcgi_pass    unix:/tmp/php-fpm-yourproject.sock;
  fastcgi_index   index.php;
  include         fastcgi_params;
}

在此配置中,请求由 /www/yourproject/public/property/index.php 处理。

样本index.php

<?php
var_dump($_GET);

/property/aid/1234

的示例输出
array(1) {
  ["aid"]=>
  string(4) "1234"
}

例如,您可以用 proxy_pass 替换 fastcgi_passfastcgi_index 指令。