Apache, mod_rewrite e URL Amigável

Apache

Update, Twitter: @jonathanisaac

As Url´s Amigáveis, como simpaticamente chamam a técnica de Rewrite, viraram rapidamente o atrativo da bolha web 2.0 pelo fato de atrair mais usuários e ainda dar mais relevância ao seu conteúdo, mais o que tem de legal nisso tudo ?

http://www.site.com.br/index.php?artigo=25&cat=amor&dia=10

Você pode conseguir:

http://www.site.com.br/index/artigo/25/cat/amor/dia/10/
http://www.site.com.br/artigo/amor/dia/10/
http://www.site.com.br/Site-25-amor-10.htm

ou seja, cerveja (piada mal posicionada), você poderá manipular da forma que achar melhor a sua URL, mais qual o objetivo ?

Além de tornar mais “amigável” ao usuário isso facilita muito nos motores de busca, e normalmente um link desses atrai sempre mais visitantes.

Ao que interessa então:

mod_rewrite, como diz o nome re-write, reescrever, este modulo convete uma url em qualquer formato em um formato pré programado por voce.

Etapa 1 – Configuração

Verifique dentro do seu httpd.conf por:

LoadModule rewrite_module modules/mod_rewrite.so
AddModule mod_rewrite.c

Se os mesmos estiverem comentados (# na frente), descomente ambos (retire o #) e reinicie o apache.

No caso do Debian 4 Etch, as linhas em questão deverão estar em mods-avaliable/rewrite.load e ou .conf e veja se o link simbolico está criado em mods-enabled/ se não estiver criado basta criando então.

ln -s origem destino

Etapa 2 – Arquivo .htaccess

Nesta etapa deve-se criar o arquivo .htaccess (ex: touch .htaccess) se o mesmo já existir, apenas verifique as permissões dele de leitura e escrita

É interessante setar como grupo e usuario do arquivo os dados utilizados pelo apache,

Ex: chown www-data.www-data .htaccess (no caso de www-data ser o utilizado pelo seu apache)

Obs: O arquivo deverá ser criado ou deverá existir no mesmo local que foi definido no apache o DocumentRoot (diretório principal)

Etapa 3 – Criando sua Url Amigável

Passo a passo agora, a minha url em questão é:

http://www.site.com.br/index.php?artigo=25&cat=amor&dia=10

Agora sim, vamos editar o .htacess com seu editor preferido e inserir:

Options +FollowSymLinks
RewriteEngine on
RewriteRule Teste(.*)-(.*)-(.*)\.htm$ /index.php?artigo=$1&cat=$2&dia=$3

Complexo ? nada é até simples demais, vamos decompor:

Options +FollowSymLinks: A opção FollowSymLinks ativada determina que o Apache deverá solicitar o arquivo real do link simbolico que será criado, sem isso resultaria em um erro 505 (em alguns casos sem essa opção funciona mesmo assim pois não foi necessário a criação de links simbolicos).

RewriteEngine on: Ativa a engine (motor) do rewrite.

RewriteRule Site-(.*)-(.*)-(.*)\.htm$ : Esta parte é o fundamento do Rewrite, é a criação da regra que será utilizada na montagem da nova URL, nessa sentença podemos traduzir que a nova URL será montada da seguinte forma: Site-1-2-3.htm sendo 1,2,3 parametros de $ definido ao final, mais quem são esses parametros ? espera p****.

/index.php?artigo=$1&cat=$2&dia=$3 : Está parte trabalha em cima da nossa URL original, repare que a URL está sendo decomposta em parametros $1, $2, $3, isso mesmo, os mesmos que serão substituidos na abordagem anterior, simples demais, ah você quer colocar o dia como sendo paramêtro ? /index.php?artigo=$1&cat=$2&$3=$4 , resolvido basta agora alterar na URL de saída.

Finalizando, tudo isso irá gerar a URL

http://www.site.com.br/Site-25-amor-10.htm a partir de

http://www.site.com.br/index.php?artigo=25&cat=amor&dia=10

Isso é só o começo, da pra brincar muito no .htaccess e ainda tem muitos links legais por ai, confiram:

Gerador de .htaccess
Manual do mod_rewrite

Obs:  é .htaccess e não .htacess


17 Comentários on “Apache, mod_rewrite e URL Amigável”

  1. […] Existem maneiras de evitar isso, “sobreescrevendo” por URIs mais amigáveis tanto para os mecanismos de busca, quanto para as pessoas guardarem. Existe material bem extenso sobre esta questão. Quem quiser, pode começar os estudos no nodesign, no artigo Apache, mod_rewrite e URL Amigável. […]

  2. Renato disse:

    Parabéns,

    Gostei principalmente da cerveja (hehehe)… Realmente bem humorado e didático.

  3. Thiego disse:

    Até que em fim um tutorial que funciona, rrsss.. muito bom cara, acabei de testar local aqui, funfou certinho..

    vlw

  4. Renan Mota disse:

    Boa tarde, muito bom o artigo, estou com uma duvida:

    e se o arquivo http://www.site.com.br/Site-25-amor-10.htm

    existir de verdade na raiz do site?

    ao invez de ler os parametros gostaria que fosse direcionado para o proprio arquivo Site-25-amor-10.htm.

    tenho um caso que acontece isso, o que devo fazer?

    Obrigado

  5. Villas disse:

    Bicho … primeira vez que leio algo sobre o assunto e confesso que achei muito bom mas gostaria de saber (vai ai a newbada…) se essa reescrita da URL onde variáveis que estão sendo passadas via GET (pois é isso que está sendo modificado certo ?…) torna a operação mais segura no caso de um form por exemplo ou não ?? … to falando besteira? e em register_globals = Off funciona também?

  6. Rafael disse:

    Boa tarde, migrei meu site para url amigavel com htaccess e deu td certo, porém o google ja tinha indexado as urls antigas e agora está aparecendo na central de Webmaster do google um monte de paginas com meta tag title e description duplicados. Ex.:
    http://www.moteisehoteis.com.br/moteis/ e http://www.www.moteisehoteis.com.br/moteis.php. Alguém ja passou por isso e pode me ajudar?

  7. […] Caso queira aprofundar seus conhecimentos e aprimorar a forma como o servidor escreve as URLs, recomendo os sites citados no NoDesign: […]

  8. […] Existem maneiras de evitar isso, “sobreescrevendo” por URIs mais amigáveis tanto para os mecanismos de busca, quanto para as pessoas guardarem. Existe material bem extenso sobre esta questão. Quem quiser, pode começar os estudos no nodesign, no artigo Apache, mod_rewrite e URL Amigável. […]

  9. Gustavo Dutra disse:

    Olá! Gostei do post! Eu escrevi um post relacionado que mostra como configurar e um pouco também da arquitetura de uma aplicação que usa mod_rewrite. Dá uma olhada lá, é uma espécie de guia do mod_rewrite.

  10. facebook fans disse:

    Wow!, this became a real quality post. Hypothetically I would like to write like that too – slacking and real effort to make a good article but what things can I believe that I procrastinate a good deal and don’t seem to get something done

  11. kikolp disse:

    Muito bom tentarei usar as regras no http://cupomdigital.com

  12. […] Existem maneiras de evitar isso, “sobreescrevendo” por URIs mais amigáveis tanto para os mecanismos de busca, quanto para as pessoas guardarem. Existe material bem extenso sobre esta questão. Quem quiser, pode começar os estudos no nodesign, no artigo Apache, mod_rewrite e URL Amigável. […]

  13. I’d love to see some comparison on this article words


Deixar mensagem para Renan Mota Cancelar resposta