sábado, 17 de julho de 2010

Fix Apache Rewrite Domain Url Encode Special Characters

No meu post anterior, eu reportei um problema que ocorre no twitter, em que ao ser redirecionado para outro domínio as variáveis GET na url de destino eram encodadas (urlencode)...

Ou seja, um simples espaço que é representado por %20 se transformava em um %2620, ou seja um %20 literal... O que tornava os resultados na página de destino incorretos quando haviam caracteres especial (special characters) na url...

O problema só ocorre em redirects de domínio, internos não são afetados....

Exemplo de Sintaxe com Problema
RewriteRule ^Link(.*)$ http://newdomain.com/Link$1 [L]
A solução do problema é simples, basta usar a FLAG: [NE] - No Escape ou Do not escape output...
Exemplo de Sintaxe sem o Problema
RewriteRule ^Link(.*)$ http://newdomain.com/Link$1 [NE,L]
Com essa FLAG a saída do RewriteRule não é escapada, o que evita escapar o que já estava previamente escapado...

Não sei se isso é um bug do mod_rewrite, mas é realmente um saco...

Nenhum comentário: