Мне нужно настроить обратный прокси-сервер, чтобы в конце URL-адреса был добавлен следующий параметр: &locale=de-de
Это почти работает:
rewrite ^(.*)$ $1&locale=de-de break;
Однако проблема в том, что мне нужно добавлять '& locale = de-de' только в том случае, если его там еще нет и если есть '?' в URL ...
Могу ли я получить помощь в формулировании правильного регулярного выражения для этого?
Другой вопрос: почему вопросительный знак в моем URL не отображается, если я использую это:
$ uri? $ Args
Или $ uri $ is_args $ args переводит не кодированный URL, а знак вопроса отображается как% 3f.
Идеи?
РЕДАКТИРОВАТЬ: Кажется, что это поведение существует при использовании в сочетании с proxy_pass. В простом переписывании это работает очень хорошо.
Соответствие для
rewrite
не включает параметры запроса, поэтому вам нужно проверить это в другом месте.Пытаться:
источник
rewrite
должноlast
быть безопасно. Ред.Параметр
rewrite
не изменяет параметры запроса, только часть пути URI. По моему опыту, путаница с переписыванием приводит к странным циклам, где новый параметр добавляется до бесконечности. Переписать, вероятно, не способ сделать это в Nginx.Вместо этого вы должны изменить
$args
переменную, используяset
директиву:источник
$args
должно быть видоизменено. Вместо этого посмотрите решение @ AlexanderAzarov.