Apache, mod_rewrite e URL Amigável

7 11 2007

Apache

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


Ações

Informações

7 respostas

20 02 2008
As melhores práticas de SEO que você pode adotar em seu web site ou blog para melhorar o posicionamento nos mecanismos de busca | desenvolvimento para web

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

26 06 2008
10 10 2008
Renato

Parabéns,

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

9 03 2009
Thiego

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

vlw

25 03 2009
Renan Mota

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

28 03 2009
7 07 2009
Villas

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?

Deixe um comentário