Os redirecionamentos nginx 301 não funcionam conforme o esperado

Os redirecionamentos nginx 301 não funcionam conforme o esperado

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;

informação relacionada