Re: location + rewrite и (де)кодирование URI

Maxim Dounin mdounin на mdounin.ru
Вт Июн 18 11:09:57 UTC 2019


Hello!

On Tue, Jun 18, 2019 at 01:27:36PM +0300, Gena Makhomed wrote:

> On 18.06.2019 11:27, Maxim Dounin wrote:
> 
> >> Есть такой фрагмент документации на директиву location:
> >>
> >>       Синтаксис: location [ = | ~ | ~* | ^~ ] uri { ... }
> >>
> >>       Для сопоставления используется URI запроса в нормализованном виде,
> >>       после декодирования текста, заданного в виде “%XX”, преобразования
> >>       относительных элементов пути “.” и “..” в реальные и возможной
> >>       замены двух и более подряд идущих слэшей на один.
> 
> >> Есть такой фрагмент конфига:
> >>
> >>       location ~ ^/wiki/(?<title>.*) {
> >>           return 301 https://$host/$title$is_args$args;
> >>       }
> >>
> 
> Получается, что в документации написано все правильно, приведенный
> фрагмент конфига содержит ошибку, и правильно будет переписать его
> таким образом:

[...]

> Только в этом случае поведение nginx будет полностью соответствовать
> RFC 3986 и более простого варианта решения этой задачи не существует?

Существует.  Проще всего сделать так:

    rewrite ^/wiki/(.*) https://$host/$1;

-- 
Maxim Dounin
http://mdounin.ru/


Подробная информация о списке рассылки nginx-ru