Artigos

Categorias

Assine o feed Assine o feed

Lomadee, uma nova espécie na web. A maior plataforma de afiliados da América Latina
Qui 27 Set 2007

URLs amigáveis utilizando o MOD_REWRITE

por Fabio Gouveia às 13:56:15

A técnica de manipulação de URL utilizando o MOD_REWRITE, ou muitas vezes chamada de URLs amigáveis, está sendo amplamente utilizada em sites de blogs e notícias entre outros por facilitar a memorização da URL pelo visitante do site e também por facilitar a indexação dos artigos pelas ferramentas de buscas como o GoogleBot.

Esta técnica permite ao desenvolvedor maior flexibilidade e facilidade na criação e manutenção do site. As configurações do MOD_REWRITE são feitas diretamente no arquivo .htaccess e dependem da configuração do arquivo httpd.conf, que é o arquivo de configurações do servidor Apache.

Para ilustrar a idéia de URLs amigáveis temos as duas URLs abaixo sendo a primeira a URL padrão utilizada em sites PHP pelo mundo todo, a segunda é a URL amigável que aponta para a mesma página da primeira URL. Então, qual delas você prefere?

#1: http://www.seusite.com.br/artigos.php?cod=33&pag=2
#2: http://www.seusite.com.br/artigos/33/2

Se você gostou do resultado então continue lendo que agora eu vou mostrar como você pode implementar o MOD_REWRITE em seu site.

Começaremos editando o arquivo de configurções do Apache, o httpd.conf. Neste arquivo vamos habilitar o módulo de reescrita dos diretórios e para isso siga os passos:

Localize as seguintes linhas neste aquivo: (note que elas podem não estar uma abaixo da outra)

#LoadModule rewrite_module modules/mod_rewrite.so
#AddModule mod_rewrite.c

Ao encontrar estas linhas remova o # (este que é o caracter de comentário do arquivo). Caso Não encontre estas linhas no arquivo, adicione-as.

Agora localize no arquivo de configuração as seguintes linhas:

<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>

Localizada as linhas, substitua a palavra None por All, isso irá permitir a reescrita de diretórios. Agora essas linhas devem ter ficado da seguine maneira:

<Directory />
    Options FollowSymLinks
    AllowOverride All
</Directory>

Após realizadas as operações vamos salvar o arquivo e reiniciar o servidor Apache, para que as novas configurações entrem em funcionamento.

Agora vamos criar o arquivo .htaccess, note que este arquivo não tem um nome, somente uma extensão. É este arquivo que manipula as propriedades do diretório atual e de seus subdiretórios. Começaremos o arquivo com a instrução: "RewriteEngine on".

#Só executa se o módulo estiver carregado no servidor
<IfModule mod_rewrite.c>
    #habilitando o módulo de reescrita
    RewriteEngine On
    #Criando a regra de reescrita
    RewriteRule ^artigo/([^/]*)(/([^/]*)/?)?$ artigo.php?cod=$2&pag=$4 [L]
</IfModule>

Coloque este arquivo na raiz do seu site.

O padrão utilizado para o comando RewriteRule é o seguinte:

RewriteRule URL_VIRTUAL URL_FÍSICA

A URL_VIRTUAL é a digitada no navegador, que será reescrita de acordo com uma expressão regular. A presença do [L] no final da linha indica que se a expressão digitada no navegador encaixar na espressã do RewriteRule ele para por ali, se não tiver este [L] o servidor continua testando pra ver se encaixa em mais alguma outra regra.

Prontinho, agora o URL amigável já deve estar funcionando no seu site, no padrão de URL mostrado no início deste artigo. Agora você precisa testar no arquivo artigo.php se as variáveis $cod e $pag estão vazias, para evitar que apareça algum erro.

Gostaria de adicionar aos favoritos?

   del.icio.us  digg  reddit  netscape  furl  technorati  mister wong 
Fim artigo
"URLs amigáveis utilizando o MOD_REWRITE" tem 0 comentários

Nome: (requerido)
Email: (requerido, nunca é exibido)
Site:  
Comentário:
  captcha Esta imagem é apenas para evitar que o blog receba comentários de "robôs" spammers. Agradeço a compreensão.
Não consegue ler? Clique aqui
Digite o código:
 
 
Copyright © 2010 — Engº Fabio Frech Gouveia. site v1
Powered by PHP Using IE7 JS CSS2:auto Using TableLess Using Prototype JS Framework Valid XHTML 1.0 Valid CSS