On 20.03.2017 18:57, Илья Шипицин wrote:

проще отключить merge и разруливать уже в приложении

отключать merge_slashes нельзя, тогда сломается вся логика работы:
http://nginx.org/ru/docs/http/ngx_http_core_module.html#merge_slashes

сломается только, если у вас используются префиксные локейшены.

префиксные локейшены используются, поэтому merge_slashes off не подходит

Локейшном с регуляркой ситуация не разыгрывается?

тема с merge_slashes redirect достаточно популярная,
странно что это до сих пор еще никто не реализовал в nginx.

какой-нибудь rewrite_by_lua ? или аналог на nginScript

как оказалось, можно и просто "программированием на конфигах nginx":

# remove multiple sequences of forward slashes
# The $uri variable with have duplicate slashes removed by default via [merge_slashes on] - just need to rewrite back to $uri # note: use of the "^[^?]*?" pattern avoids any matches in the querystring section of URI - which would cause an infinite redirect loop
if ($request_uri ~ "^[^?]*?//") {
        rewrite "^" $scheme://$host$uri permanent;
}

но добавлять этот фрагмент кода в каждый сайт... нет ли проще варианта?

например, сделать merge_slashes redirect значением по умолчанию?

--
Best regards,
 Gena

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

Ответить