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 mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Ответить