Здравствуйте, All!

Есть такой фрагмент документации на директиву location:

    Синтаксис: location [ = | ~ | ~* | ^~ ] uri { ... }

    Для сопоставления используется URI запроса в нормализованном виде,
    после декодирования текста, заданного в виде “%XX”, преобразования
    относительных элементов пути “.” и “..” в реальные и возможной
    замены двух и более подряд идущих слэшей на один.

Есть такой фрагмент конфига:

    location ~ ^/wiki/(?<title>.*) {
        return 301 https://$host/$title$is_args$args;
    }

Судя по документации, этот фрагмент конфига не должен работать, потому
что в $title ведь попадает уже декодированный русский текст из location?

Но почему-то эксперимент с помощью curl показывает, что в редиректе возвращается текст закодированный в виде “%XX”, а не обычный Unicode.

Почему все работает именно так и как тогда надо понимать документацию?

В каких случаях в nginx необходимо вручную кодировать/декодировать
фрагменты uri и/или переменные $arg_имя а когда этого делать не надо?

--
Best regards,
 Gena

_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Ответить