Re: location + rewrite и (де)кодирование URI
Gena Makhomed
gmm на csdoc.com
Вт Июн 18 12:12:12 UTC 2019
On 18.06.2019 14:09, Maxim Dounin wrote:
> Проще всего сделать так:
>
> rewrite ^/wiki/(.*) https://$host/$1;
в таком случае в редиректе возвращается раскодированный урл:
$ curl -I https://example.com/wiki/%D1%82%D0%B5%D1%81%D1%82
HTTP/1.1 301 Moved Permanently
Location: https://example.com/тест
Более многословный вариант редиректа работает корректно,
так как и ожидается от него в соответствии с RFC 3986:
# curl -I https://example.com/wiki/%D1%82%D0%B5%D1%81%D1%82
HTTP/1.1 301 Moved Permanently
Location: https://example.com/%D1%82%D0%B5%D1%81%D1%82
Конфиг, который работает корректно:
Файл 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;
}
}
--
Best regards,
Gena
Подробная информация о списке рассылки nginx-ru