
Я добавил следующие правила в свой файл 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
Nginx использует внутренне нормализованные URI:
Сопоставление выполняется с нормализованным URI после декодирования текста, закодированного в форме «%XX», разрешения ссылок на компоненты относительного пути «.» и «..», а также возможного сжатия двух или более смежных слешей в один слеш.
Используйте кавычки (одинарные или двойные) для заключения пробела в строку.
Итак, это будет:
rewrite "^/top100/Armin van Buuren/(.*)$" /armin-van-buuren/$1 redirect;