mod_rewrite con espacios en las URL
-
03-07-2019 - |
Pregunta
Necesito configurar algunas RewriteRules para redirigir una URL que tenga un espacio. He intentado esto:
RewriteRule ^article/with%20spaces.html$ /article/without_spaces.html [R=301,L]
... pero no funciona. Poner un espacio en lugar de% 20 provoca un error interno del servidor 500. ¿Cómo agrego un espacio?
Solución
Intenta poner un \ delante de tu espacio para escapar.
RewriteRule ^article/with\ spaces.html$ /article/without_spaces.html [R=301,L]
Otros consejos
Puedes escapar del espacio con un \
RewriteRule ^article/with\ spaces.html$ /article/without_spaces.html [R=301,L]
Si desea evitar la complejidad de escapar de cada espacio (por ejemplo, si planea generar este archivo automáticamente), puede simplemente usar comillas:
RewriteRule "^article/with spaces.htmlRewriteRule "^article/with spaces.html<*>quot; "/article/without_spaces.html" [R=301,L]
quot; /article/without_spaces.html [R=301,L]
Además, estas citas se pueden usar para encerrar cualquier argumento esperado:
<*>RewriteRule ^article/with[\ |%2520]spaces.html$ /article/without_spaces.html [R=301,L]
La primera opción reemplaza un espacio mientras que la segunda reemplaza% 20 codificado en la url.
Ah, he encontrado una solución: use el estilo regex para mostrar un espacio:
RewriteRule ^article/with\sspaces.html$ ...
Sin embargo, sospecho que esto también coincidiría con todos los demás caracteres de espacio en blanco (pestañas, etc.), pero no creo que vaya a ser un gran problema.