перенаправления nginx 301, не работающие как ожидалось

Я добавил следующие правила к своему nginx.conf файлу

rewrite ^/top100/Armin%20van%20Buuren/(.*)$ http://www.example.com/armin-van-buuren/$1 redirect;
rewrite ^/top100/armin-van-buuren/(.*)$ http://www.example.com/armin-van-buuren/$1 redirect;
rewrite ^/top100/(.*)$ http://www.example.com/$1 redirect;

Для 1-го правила это перенаправляет к www.example.com/top100/Armin%20van%20Buuren/ кому: www.example.com/Armin%20van%20Buuren/

Другие 2 правила хорошо работают. Что я портил здесь?

1
задан 23 November 2014 в 15:27
1 ответ

Nginx использует внутренне нормализованные URI:

Сопоставление выполняется с нормализованным URI после декодирования текста, закодированного в форме «% XX» , разрешая ссылки на компоненты относительного пути «.» и «..», а также возможное сжатие двух или более соседних косых черт в одну косую черту.

Используйте (одинарные или двойные) кавычки, чтобы заключить пробел в строку.

Таким образом, это будет:

rewrite "^/top100/Armin van Buuren/(.*)$" /armin-van-buuren/$1 redirect;
3
ответ дан 3 December 2019 в 18:42

Теги

Похожие вопросы