Posted: December 12th, 2007 | Author: Felipe Ribeiro | Filed under: Uncategorized | Tags: apache, php, seo, web 2.0 | 4 Comments »
Com toda essa moda de SEO, Web 2.0 e etc, os desenvolvedores estão se interessando em melhorar o que é mostrado para o usuário até na URL, pois isso é bom para a indexação nos sistemas de busca – adiciona palavras-chave na url – e deixa mais entendível para quem usa o site.
Com mod_rewrite você faz um mapeamento de como as URLs são exibidas, e a que endereço elas realmente apontam, por exemplo:
Você tem uma parte do seu site que lista usuários por localidade e a URL pra essa página é www.exemplo.com.br/usuarios.php?pais=Brasil&estado=PB&cidade=Campina Grande, se você usa o mod_rewrite você pode fazer com que essa página seja aberta através da URL www.exemplo.com.br/usuarios/Brasil/PB/Campina Grande, que deixa bem mais elegante e melhor de ser indexado pelos sistemas de busca, que não costumam indexar páginas com muitos parâmetros passados por GET. (Normalmente também tem dificuldade em indexar documentos em diretórios num nível muito abaixo da raíz, mas isso é menos crítico).
E a mágica funciona assim:
1 – Certifique-se que o mod_rewrite está habilitado no seu Apache.
Uma maneira simples de fazer isso é com <? phpinfo(); ?> e procurando na parte que mostra os módulos do Apache.
2 – Crie um arquivo .htaccess na raíz do seu site.
3 – Escreva as regras no seu .htaccess:
RewriteEngine on
RewriteRule usuarios/(.*)/(.*)/(.*)$ usuarios.php?pais=$1&estado=$2&cidade=$3 [L]
(Idealmente a RewriteRule fica numa linha só, a quebra foi feita aí por motivos de formatação do blog)
Aí eu estou dizendo para o apache redirecionar qualquer request que vem para /usuarios/XPTO/FOO/BAR para /usuarios.php?pais=XPTO&estado=FOO&cidade=BAR, e onde eu coloquei o (.*) pode ser qualquer regex.
Você pode escrever quantas RewriteRule quiser no seu .htaccess e o Apache vai usar a que primeiro casar com a situação, então é bom estar ligado nessa ordem de precedência, pois se você colocar algo como:
RewriteRule usuarios/(.*)$ usuarios.php?pais=$1 [L]
RewriteRule usuarios/(.*)/(.*)/(.*)$ usuarios.php?pais=$1&estado=$2&cidade=$3 [L]
Vai ter problemas, pois nunca vai entrar no segundo caso, já que o (.*) significa “qualquer caracter, 0 ou mais vezes”, então a / entra nesse bolo, e vc vai ser redirecionado para usuarios.php?pais=Brasil/PB/Campina Grande. Então é bom ter cuidado para usar as Regex corretas e a ordem correta.
Vantagens de se usar mod_rewrite:
1 – Caso você não queira, não precisa expor qual tecnologia você está usando (ocultando a extensão .php, .psp, .pl, .py ou seja lá o que for);
2 – As URLs ficam mais legíveis e relevantes para usuários e search bots;
3 – Você pode fazer uma “gambiarra” para deixar informações relevantes na URL mesmo que não precise delas na sua página, por exemplo: você tem uma loja, e tudo que você precisa para abrir os detalhes de um produto é o id dele: produto.php?id=123456, mas para deixar a url mais bacana e ser indexada melhor você cria a regra:
RewriteRule produto/(.*)/(.*)$ produto.php?id=$2 [L]
e usa essa URL com: www.exemplo.com.br/produto/NOMEDOPRODUTO/ID e o sistema só pega o id ($2), daí ficaria algo como: www.exemplo.com.br/produto/Nintendo Wii/123456
Desvantagens de se usar mod_rewrite:
1 – Você precisa ter um cuidado re-dobrado quando passar strings com caracteres especiais como o &. Pois o .htaccess redireciona pra o seu script, o PHP no caso, e o PHP vai entender o & não como parte da sua string, mas como o separador de parâmetros do GET.
2 – Não sei se em sites de muito tráfego e muitas regras, isso pode interferir (mesmo que muito pouco) na performance, pelo fato do Apache precisar ler e testar todas as regex na url. (também não sei se é feito assim, mas acredito que sim)
Minha experiência com mod_rewrite foi pouca, talvez eu tenha falado bobagem, e se eu tiver, por favor, corrijam-me nos comentários!
Posted: December 2nd, 2007 | Author: Felipe Ribeiro | Filed under: Uncategorized | Tags: eventos, php | 1 Comment »
Depois de acabado o evento, vou fazer um pequeno review com comentários:
O evento foi bom, o contato com profissionais da área fez valer a pena, infelizmente no segundo dia não pude assistir as palestras da manhã (keynote) porque cheguei tarde da noitada, e pra completar, quando tava indo para o evento, o ônibus quebrou! E das que assisti vou dar destaque à essas:
1 – A palestra de Design Patterns do Alexandre Altair, que foi muito boa, ele falou dos principais pontos do assunto, de maneira que ficou simples para quem ainda não teve muito contato com padrões de projeto, mas não deixou de falar das peculiaridades desses padrões quando vamos para a realidade dos scripts PHP, como no singleton que postei aqui certa vez, e que muitas vezes as pessoas que falam sobre isso passam por cima.
2 – A do Cesar sobe Caching, já que caching é aquele tipo de coisa que todo mundo sabe o que é, ou já ouviu falar, mas dificilmente põe em prática.
3 – A do Manuel Lemos sobre o desenvolvimento de sites de grande audiência também deu toques que valeram a pena.
Mas posso dizer que a organização deixou a desejar, por coisas como:
1 – Local: O local em si é bom, bem amplo e agradável, mas a distância de São Paulo desanima. Peguei um ônibus pra chegar lá e levei mais ou menos uma hora saindo da Paulista. Mais uns 10 minutos a pé.
2 – Palestras: Para mim essa foi uma questão ainda mais crítica, achei que o conteúdo não foi tão instigante, considerei inclusive bem mais fraco que o ano passado. Palestras com tópicos repetitivos e até palestras que já foram apresentadas na edição 2006.
Muitos assuntos que poderiam atrair a atenção de profissionais mais experientes não foram abortados como: Flex (AMFPHP), Web Services(SOAP e/ou Rest) e APIs públicas, PHP-CLI, engenharia de software (sei lá… de repente: XP com PHP), entre outros…
3 – Coffe-break: Isso é menos crítico mas acho que vale a pena ser comentado. Um participante pagar 100 reais (estou falando de quem pagou o preço final do evento), e ter bolacha Trakinas e aquelas bolachas salgadas como coffee-break eu acho meio absurdo. Já fui para vários eventos que teoricamente seriam mais “amadores” do que esse, organizados por grupos de estudantes, bem mais informais que tinham no mínimo salgadinhos, bolos e refrigerante. No PHPConf existe uma empresa de eventos por trás e não se preocupa com isso.
No fim das contas até que valeu a pena, mas para a edição 2008 penso em preparar algo para apresentar, de preferência mais voltado para o pessoal do nível intermediário/avançado.