Mostrando postagens com marcador Internet. Mostrar todas as postagens
Mostrando postagens com marcador Internet. Mostrar todas as postagens

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...

sexta-feira, 16 de julho de 2010

Twitter - Link para Twittar com acentos...

Bom dia, achei um bug muito engraçado no twitter hoje...
Estava tentando responder a uma pergunta no orkut questionando porque o link dele não estava funcionando...
Pesquisei e não encontrei a resposta, resolvi tentar a solução idiota, pois achei uns links que funcionavam com acentos e outros que não...
Percebi que a diferença entre eles era o www.
Sim o www...

$tweet = "Frase com acento é foda!!! Mas é muito legal a programação... ä";
$tweet =  ($tweet);
$tweet = utf8_encode($tweet);
$tweet = urlencode($tweet);
header("Location: http://twitter.com/?status=".$tweet); //Funciona
header("Location: http://www.twitter.com/?status=".$tweet); //Não funciona
 E lembre-se de codificar em UTF-8 antes de enviar...
Não sei exatamente a causa do bug... Creio que alguma configuração que desconheço no servidor do twitter...
O problema é que no servidor com www. os acentos ficam urlencodados the way they are "s%E7%E3o", já no sem www. ele decodifica para "são"...
Bug esquisito, espero que ajude quem estiver com esse problema com palavras acentuadas em seus links...
Detalhe, o problema também afeta hyperlinks (aquele <a href="http://www.twitter.com/?status=">...
Então preste atenção a este detalhe...
Isso claramente não afeta apenas o PHP, mas qualquer linguagem... Pois os links gerados não funcionam nos browsers também...
Segue links para você testar por você mesmo (os links não funcionam pra quem não esta logado):
Tenha medo, muito medo, :P

Update: Entendi o bug... Ao acessar a url com www ele redireciona para a url sem o www, e neste redirect ele acaba sujando a mensagem...
Coisa de programador idiota que faz urlencode(urlencode($text))...

segunda-feira, 14 de junho de 2010

Migração de Hospedagem

Hoje eu migrei minha hospedagem da GoDaddy para a Kinghost.
O legal que eu consegui fazer a migração sem afetar o funcionamento da WebApp que eu rodo no servidor...
Como eu consegui fazer isso foi muito simples....
Primeiro eu preparo a nova hospedagem para o funcionamento da aplicação... Muito simples isso, uso o arquivo hosts local para testar as configurações no novo site...
Após estar em funcionamento, eu crio um subdomínio com acesso a aplicação, se a nova hospedagem permitir na mesma pasta, ou então o sistema terá de rodar temporariamente neste novo subdomínio...
Então eu faço o backup do banco de dados (sim, aqui há um pequeno downtime)
Após terminar de fazer a restauração do Backup na nova hospedagem...
Agora nos endereços antigos da aplicação eu coloco um redirecionamento pra nova hospedagem...
Então todas as tentativas de acesso ao sistema, serão encaminhadas ao subdomínio que está com o DNS apontando ao novo servidor...
Até que o DNS se propague por completo você vai manter o sistema nesse subdomínio...
Quando acabar você move o sistema pra localização antiga e pronto...
Simples....