nginx 301 redireciona não funcionando como esperado

1

Eu 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 primeira regra, ele redireciona para www.example.com/top100/Armin%20van%20Buuren/ to www.example.com/Armin%20van%20Buuren/

As outras duas regras estão funcionando bem. O que eu baguncei aqui?

    
por Yin Yang 23.11.2014 / 14:27

1 resposta

3

O Nginx usa URIs normalizados internamente:

The matching is performed against a normalized URI, after decoding the text encoded in the “%XX” form, resolving references to relative path components “.” and “..”, and possible compression of two or more adjacent slashes into a single slash.

Use aspas (simples ou dupla) para envolver o espaço em uma string.

Então seria:

rewrite "^/top100/Armin van Buuren/(.*)$" /armin-van-buuren/$1 redirect;
    
por 23.11.2014 / 14:35