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