У меня есть URL-адрес такого типа:
http://www.example.com/?param1=val1¶m2=¶m3=val3¶m4=val4¶m5=val5
И я хочу перенаправить его на этот:
http://www.example.com/newparam/val3/val4
Итак, я безуспешно пробовал это правило перезаписи:
rewrite "/?param1=val1¶m2=¶m3=(.+)¶m4=(.+)¶m5=(.+)" http://www.example.com/newparam/$1/$2 redirect;
Nginx не может обрабатывать параметры запроса?
РЕДАКТИРОВАТЬ: Я не хочу переписывать все петиции. Мне нужно только переписать этот URL, не затрагивая другие.
Хорошо, благодаря начальной помощи rzab я переопределил его правило на это рабочее решение:
location / {
if ($args ~* "/?param1=val1¶m2=¶m3=[0-9]+¶m4=.+¶m5=[0-9]+") {
rewrite ^ http://www.example.com/newparam/$arg_param3/$arg_param4? last;
}
}
Я просто добавил условие, чтобы избежать бесконечной рекурсии, и? в конце правила, чтобы избавиться от начальные параметры. Работает отлично :)
location = / { rewrite ^ http://www.example.com/newparam/$arg_param3/$arg_param4; }