
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;