Nginx: как мне переписать подкаталог URL в параметр запроса?

#php #wordpress #nginx #ngx-http-rewrite-module

#php #wordpress #nginx #ngx-http-rewrite-module

Вопрос:

Я пытаюсь переписать URL на веб-сайте WordPress, на котором работает Nginx, так, чтобы последний подкаталог был преобразован в GET-parameter:

http://mydomain/property/aid/1234/ Для http://mydomain/property/?aid=1234/

Я пробовал с add_rewrite_rule в WordPress, но это не сработало, поскольку не создало новую $_GET запись.

Затем я попробовал следующее правило Nginx:

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

который, похоже, вообще не имеет никакого эффекта.

Есть предложения?

Ответ №1:

Предположим, что корень документа /www/yourproject/public . Тогда конфигурация для PHP-FPM может выглядеть следующим образом:

 rewrite "^/property/aid/([0-9] )$" /property/?aid=$1 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"
}
  

Вы можете заменить, например, директивы fastcgi_pass и fastcgi_index на proxy_pass .