Правило перезаписи Apache для nginx

Правило перезаписи Apache для nginx

Мне нужно создать правило перезаписи для Apache, а также для Nginx.

Необходимое изменение:

/search?q=test&**p**=1 to /search?q=test&**page**=1

Для Apache приведенный ниже код работает хорошо, но я не могу преобразовать его для nginx.

RewriteCond %{QUERY_STRING} ^q=(.*)&p=([0-9]+)(.*)$
RewriteRule ^(search/?)$ /search?q=%1&page=%2 [NC,L,R]

Я пробовал что-то вроде этого:

  if ($query_string ~ "^q=(.*)&p=([0-9]+)(.*)$"){
    rewrite ^/(search/?)$ /search?q=%1&page=%2 redirect;
  }

Но заканчивается это примерно так:

/search?q=%1&page=%2&q=%1&page=%2&q=%1&page=%2&q=%1&page=%2&q

Что я делаю не так?

решение1

Документация Nginx по переписыванию модулейесть несколько примеров. По сути, вы используете не тот символ для идентификации результатов регулярного выражения. Он должен быть $вместо %.

Вам также может потребоваться повторить регулярное выражение для соответствующего правила перезаписи int.

Связанный контент