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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top