Picotando e maquiando URLs

Seu site funciona na base do index.php?idpag=23&idproduto=343 ? Cada vez que você vai passar um URL você tem que explicar o que é a “?” e esses id* da vida?

Acabe com isso, facilite a vida do seu usuário e aumente até o acesso ao seu site com uma simples solução, mod_rewrite. Veja como implementar este módulo do Apache em seu servidor, neste post.

Esta semana foram lançados os Blogs do site ComuniWEB, e com eles um desafio do passado voltou a tona. Como o site é base para um jornal impresso com alguma frequencia procuramos fazer uma ligação chamando a atenção do leitor para o site. No passado isso era feito passando um longo URL “index.php?idpaginas=20&idmaterias=123456”, mas isso é um grande problema pra que lida no dia a dia com usuários leigos que nao entendem o que esta informação significa.

Mesma coisa com os blogs, acessar um endereço do tipo “blog.php?id=fulanosilva” não é nada intuitivo, imaginem acessar os posts antigos deste blog sem usar os conhecidos “permalinks”. A navegação se torna muito mais intuitiva, gerando mais acessos e melhorando o entendimento de logs de acesso.

O processo é simples (agora que consegui enteder :D) você habilita o mod_rewrite, determina as condições e por fim determina como deve ser re-escrito o URL. Claro que na teoria tudo é lindo e fácil, na prática o trabalho sempre é maior.

Primeiro verifique se seu servidor possui o mod_rewrite habilitado no Apache: use um phpinfo(); e verifique a linha “Loaded Modules” da configuração Apache. Caso esteja habilitado podemos seguir em frente, como ilustração vamos desenvolver o exemplo citado abaixo:

URL Original: http://www.domain.com/fulanodetal URL Final: http://www.domain.com/blog.php?id=fulanodetal

Desta forma o usuário terá uma forma mais rápida de acessar o blog de Fulanodetal.

O servidor deve estar configurado para aceitar arquivos do tipo .htaccess em diretórios, este arquivo permite setarmos configurações extras ou diferenciadas no Apache para esta pasta em específico. É neste arquivo que vamos carregar as configurações. Vou mostrar a estrutura final do arquivo e depois explicar cada pedaço.

Na linha 1 indicamos que nesta pasta devemos ativar o mod-rewrite. Nas linhas 3 e 4 setamos as condições onde a regra da linha 6 deve ser usada. Na linha 6 finalmente, falamos o que deve ser feito com a url.

Condições: Estas condições devem ser respeitadas para que a URL seja re-escrita, neste caso temos duas condições baseadas em flags do CondPattern. Nestas diretivas usamos uma syntaxe Perl de expressões regulares com algumas adições. O flag !-f se trata da negação do flag -f que indica se o “alvo” é um arquivo válido no servidor O flag !-d se trata da negação do flag -d que indica se o “alvo” é um diretório válido no servidor Com isso estabelecemos que se o URL aponta para algo que não seja um arquivo válido ou diretório, ou seja, algo que não existe no servidor, devemos usar a regra em seguida para re-escrever a URL.

Regras de re-escrita: O comando RewriteRule é o mais importante do grupo, é ele que efetua a re-escrita jogando os elementos nos seus lugares Neste caso usamos primeiro uma expressão regular para definir os trechos do nosso URL importantes. Quem já sou expressão sabe que cada texto compatível com uma expressão entre ( ) irá retornar como um item $1, $2 após aplicada a expressão. Sabendo isso podemos verificar que a expressão captura tudo que vai além do nosso url, pois o arquivo .htaccess esta na raiz de nossa estrutura de arquivos do servidor.

Pegando tudo que vai além do / em nosso exemplo pegamos fulanodetal e em seguida a expressão mostra onde isso será usado concatenando “blog.php?id=” com $1 (o primeiro match da expressão, fulanodetal). e finalmente após a expressão temos FLAGS especiais, sempre entre [ ] que indicam várias regas, neste caso L significa que está é a última regras a ser aplicada, pulando com isso qualquer outra coisa que estiver no arquivo.

De uma forma geral esta é a estrutura do mod_rewrite, os comandos possuem ainda uma vasta gama de flags e condições que podemos usar, verifique abaixo alguns links que podem ajudar:

Cheatsheet: http://www.ilovejackdaniels.com/apache/mod_rewrite-cheat-sheet/ Documentação oficial: http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html Ferramenta para escrever regras de re-escrita (Wizard) http://www.mod-rewrite-wizard.com/

comments powered by Disqus

Related Posts

php|tek09: Dia #0

php|tek09: Dia #0

  • May 19, 2009

O primeiro dia em Chicago começou cedo, as 5h. Do aeroporto pro hotel foi uma viagem tranquila, após ligar para o excelente supporte da MTACon que prontamente me apontou pro transporte do hotel, sim.

Read More
ReviewMe: Ganhe dinheiro por sua opinião!

ReviewMe: Ganhe dinheiro por sua opinião!

  • November 17, 2006

Artigo patrocinado por: Review Me

Sim, eu falei patrocínio! Não, eu não virei popstar. A importância dos Blogs cresce a cada dia, e seu potencial como ferramenta de influencia é cada vez mais inegável. Visando aproveitar esta onda vimos surgir várias formas de anunciar nestes sites, como AdSense , Admarket dentre outros. O que é novo então?

Read More
A study on RSS - Part 1 XML DOM

A study on RSS - Part 1 XML DOM

  • July 15, 2006

RSS, today someone asked me, “what is this?” Well, I know what it is, but at that moment the words failed me, especially the “non-programmer” words, so as to explain to “the common folk” the true meaning of it and some of its uses.

Read More