Перенаправления nginx 301 не работают должным образом

Перенаправления 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

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

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

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

Итак, это будет:

rewrite "^/top100/Armin van Buuren/(.*)$" /armin-van-buuren/$1 redirect;

Связанный контент