mod_rewrite com espaços nos urls
-
03-07-2019 - |
Pergunta
Eu preciso configurar alguns RewriteRules para redirecionar uma URL que tem um espaço nele. Eu tentei isso:
RewriteRule ^article/with%20spaces.html$ /article/without_spaces.html [R=301,L]
... mas ele não funciona. Colocando em um espaço em vez de% 20 provoca um erro 500 Internal Server. Como faço para adicionar um espaço?
Solução
Tente colocar um \ na frente de seu espaço para escapar.
RewriteRule ^article/with\ spaces.html$ /article/without_spaces.html [R=301,L]
Outras dicas
Você pode simplesmente escapar do espaço com a \
RewriteRule ^article/with\ spaces.html$ /article/without_spaces.html [R=301,L]
Se você quiser evitar a complexidade de escapar cada espaço (por exemplo, se você pretende ter esse arquivo gerado automaticamente), você pode simplesmente usar aspas:
RewriteRule "^article/with spaces.html$" /article/without_spaces.html [R=301,L]
Além disso, estas citações podem ser usados ??para envolver qualquer um esperado argumento:
RewriteRule "^article/with spaces.html$" "/article/without_spaces.html" [R=301,L]
RewriteRule ^article/with[\ |%2520]spaces.html$ /article/without_spaces.html [R=301,L]
A primeira opção substitui um espaço enquanto o segundo substitui codificado% 20 no URL.
Ah, eu encontrei uma solução: usar o estilo regex para mostrar um espaço:
RewriteRule ^article/with\sspaces.html$ ...
Porém, eu suspeito que isso iria coincidir com todos os outros espaços em branco também (guias, etc), mas eu não acho que vai ser um grande problema.