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;
}
Получается, что в документации написано все правильно, приведенный
фрагмент конфига содержит ошибку, и правильно будет переписать его
таким образом:
======================================================================
Файл conf.d/example.com.js:
function title_encodeURIComponent(r) {
return encodeURIComponent(r.variables.title);
}
Файл conf.d/example.com.conf:
js_include conf.d/example.com.js;
js_set $title_encodeURIComponent title_encodeURIComponent;
server {
# ...
location ~ ^/wiki/(?<title>.*) {
return 301 https://$host/$title_encodeURIComponent$is_args$args;
}
# ...
}
======================================================================
?
Только в этом случае поведение nginx будет полностью соответствовать
RFC 3986 и более простого варианта решения этой задачи не существует?
--
Best regards,
Gena
_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru