Las redirecciones nginx 301 no funcionan como se esperaba

Las redirecciones nginx 301 no funcionan como se esperaba

He agregado las siguientes reglas a mi archivo 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 la primera regla, redirige a www.example.com/top100/Armin%20van%20Buuren/awww.example.com/Armin%20van%20Buuren/

Las otras 2 reglas funcionan bien. ¿Qué me equivoqué aquí?

Respuesta1

Nginx utiliza URI normalizados internamente:

La comparación se realiza contra un URI normalizado, después de decodificar el texto codificado en el formato "%XX", resolviendo las referencias a los componentes de la ruta relativa "." y “..”, y posible compresión de dos o más barras diagonales adyacentes en una sola barra.

Utilice comillas (simples o dobles) para ajustar el espacio en una cadena.

Entonces sería:

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

información relacionada