Назад | Перейти на главную страницу

Как убрать массовые конечные косые черты (Nginx)

Мне нужно удалить массовые конечные косые черты, теперь у меня есть

rewrite ^/(.*)/$ /$1 permanent;

Так www.example.com/ становится www.example.com.

Это хорошо, но когда я иду в www.example.com/// (любое количество косых черт) это не перенаправляет. Мне нужно сделать любое количество косых черт в конце перенаправления на страницу без косой черты.

Nginx нормализует URI, удаляя последовательные вхождения / перед обработкой с помощью rewrite и location директивы. Итак, ваше правило никогда не видит последовательных /с. Видеть этот документ для подробностей.

Исходный запрос доступен как $request_uri и можно проверить с помощью if блок.

Например:

if ($request_uri ~ ^(.*/)/($|\?.*)) { return 301 $1$2; }

Видеть это предупреждение по использованию if.