
Adicionei as seguintes regras ao meu arquivo 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;
Para a 1ª regra, ele redireciona para www.example.com/top100/Armin%20van%20Buuren/
parawww.example.com/Armin%20van%20Buuren/
As outras 2 regras estão funcionando bem. O que eu errei aqui?
Responder1
Nginx usa URIs normalizados internamente:
A correspondência é realizada em relação a um URI normalizado, após decodificar o texto codificado na forma “%XX”, resolvendo referências aos componentes do caminho relativo “.” e “..”, e possível compactação de duas ou mais barras adjacentes em uma única barra.
Use aspas (simples ou duplas) para envolver o espaço em uma string.
Então seria:
rewrite "^/top100/Armin van Buuren/(.*)$" /armin-van-buuren/$1 redirect;