Назад | Перейти на главную страницу

nginx переписывает URL с параметрами

У меня есть URL-адрес такого типа:

http://www.example.com/?param1=val1&param2=&param3=val3&param4=val4&param5=val5

И я хочу перенаправить его на этот:

http://www.example.com/newparam/val3/val4

Итак, я безуспешно пробовал это правило перезаписи:

rewrite "/?param1=val1&param2=&param3=(.+)&param4=(.+)&param5=(.+)" http://www.example.com/newparam/$1/$2 redirect;

Nginx не может обрабатывать параметры запроса?

РЕДАКТИРОВАТЬ: Я не хочу переписывать все петиции. Мне нужно только переписать этот URL, не затрагивая другие.

Хорошо, благодаря начальной помощи rzab я переопределил его правило на это рабочее решение:

location / {
    if ($args ~* "/?param1=val1&param2=&param3=[0-9]+&param4=.+&param5=[0-9]+") {
        rewrite ^ http://www.example.com/newparam/$arg_param3/$arg_param4? last;
    }
}

Я просто добавил условие, чтобы избежать бесконечной рекурсии, и? в конце правила, чтобы избавиться от начальные параметры. Работает отлично :)

location = / {
  rewrite ^ http://www.example.com/newparam/$arg_param3/$arg_param4;
}