URLs amigáveis com Mod Rewrite

Mais conhecido como "URL Amigáveis", o redirecionamento direto é bastante utilizado atualmente e uma das bases para que um site fique no topo dos serviços de busca. Seu objetivo é reescrever urls complexas por urls mais objetivas, simplificando o acesso e facilitando pesquisas. ? um procedimento simples mas muitas vezes não é entendido pelo programador, pois possui comandos não muito utilizados diariamente. Como já utilizei este procedimento anteriormente e vi muitos outros tutoriais sobre o assunto, resolvi escrever o meu próprio, tentando facilitar e explicar melhor o funcionamento.

Como este procedimento não é realizado muitas vezes, acabamos por esquecer seus comandos e funcionalidades. Muita gente já fez mas se perde, acabando por recorrer a tutoriais toda vez que precisamos. Eu mesmo já utilizei deste recurso em várias situações.

Então vamos aprender (de forma a não esquecer mais) qual a função de cada comando, comentá-los, e depois criar nosso próprio redirecionamento amigável.

O que é mod_rewrite?

O mod_rewrite é um módulo do apache que utiliza uma regra de reescrita de URL's baseado em expressões regulares. Por padrão, o mod_rewrite mapeia uma URL para um caminho de sistema de arquivos, mas também pode ser utilizado para redirecionar uma URL para outra, ou para invocar um proxy interno.

Ele oferece uma maneira flexível e poderosa para manipular URL's usando um número ilimitado de regras. Cada regra pode ter um número ilimitado de condições que permitem reescrever uma URL com base em variáveis ????de servidor, variáveis ????de ambiente, cabeçalhos HTTP, ou datas. Estas regras de reescrita podem ser invocadas nos arquivos httpd.conf ou no .htaccess, facilitando a manipulação.

Principais Comandos:

RewriteEngine: Este comando ativa ou desativa o mod_rewrite
RewriteCond: Este comando define uma condição ou regra. Uma ou várias RewriteCond pode preceder uma ou várias RewriteRules, e são executadas sempre em sequência. A regra da linha abaixo, já atende as transformações RewirteRules das regras acima.
RewriteRule: Este é o comando de reescrita. Pode ser utilizada mais de um vez sendo que a linha abaixo recebe a URL já reescrita acima.

# Habilita o mode_rewrite
RewriteEngine on

# Verifica se a URL aponta para um arquivo. Caso não seja, passa à próxima linha.
RewriteCond %{REQUEST_FILENAME} !-f
# Verifica se a URL aponta para um diretório. Caso não seja, passa à próxima linha.
RewriteCond %{REQUEST_FILENAME} !-d
# Não reescreve a linha quando o existe arquivos do tipo js, css, jog, png e gif, que são incluídos dentro do código.
RewriteRule ^(.*\.)(js|css|jpg|png|gif)$ $1$2 [L,NC] 

# Indica que qualquer requisição passará para index.php, assim, trataremos nossas variáveis dentro de index.php
RewriteRule ^\/?$ index.php [NC,L]
# Caso queira acessar uma pasta funcional, pode-se utilizar este método. No exemplo aponta para admin
RewriteRule ^admin\/?$ admin/index.php [NC,L]
# Substitui o conteúdo do URL por variáveis da seguinte forma.
# www.empresa.com.br/pagina/pagina1 para www.empresa.com.br/index.php?page=pagina.php&link=pagina1
RewriteRule ^([a-zA-Z0-9_-]+)\/([a-zA-Z0-9_-]+)\/?$ index.php?page=$1.php&link=$2 [NC,L]

Próximo passo

Assim que o código acima é requisitado, o usuário é enviado para a página index.php. Devemos então tratar as variáveis recebidas: page e link. Por exemplo, faça um include do que você receber na variável page, e utilize a variável link como título do conteúdo. Enfim, seja criativo. Segue o código de exemplo.

$page = $_GET['page'];
$titulo = $_GET['link'];
include $page;

Conclusão

Seja criativo e aproveite das oportunidades que o mod_rewrite oferece. Assim você criará URLs amigáveis e regras de funcionamento variadas para seu website ou sistema web.

Até o ´próximo post!



Tags desta matéria

Deixe sua opnião