Я должен создать правило перезаписи для 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 ответ1

0

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .