Dezembro 25, 2014 Shell

URLs amigáveis: Manipulando URLs com .htaccess e mod_rewrite

Este artigo é destinado aos clientes que possuem dúvidas sobre o mod_rewrite e suas funcionalidades. Atualmente, é muito comum o uso de scripts que são executados no servidor para gerenciar conteúdos dinâmicos em páginas web. Isto é muito interessante, entretanto geram problemas. Ex.: URLs muito grandes ou complicadas demais, que podem prejudicar a indexação do […]

Este artigo é destinado aos clientes que possuem dúvidas sobre o mod_rewrite e suas funcionalidades.

Atualmente, é muito comum o uso de scripts que são executados no servidor para gerenciar conteúdos dinâmicos em páginas web. Isto é muito interessante, entretanto geram problemas. Ex.: URLs muito grandes ou complicadas demais, que podem prejudicar a indexação do site por mecanismos de busca.

Exemplo de uma url complicada, de difícil memorização: http://www.meudominio.com.br/index.php?sessao=artigos&dia=26&mes=12&ano=2014-12-26

Exemplo de url amigável: http://www.meudominio.com.br/artigos/26/12/2014

O que é o mod_rewrite?

Mod_rewrite é um módulo do apache que realiza a reescrita transparente de URLs usando expressões regulares. É semelhante a um redirecionamento, porém o usuário não saberá que a página foi reescrita, já que o endereço na barra de endereços do navegador não muda e nenhum cabeçalho HTTP é enviado.

Na prática:

1. Crie/Edite o arquivo .htaccess no diretório raiz do seu site (DocumentRoot) e acrescente a linha:
RewriteEngine On

#Esta linha habilita o uso do mod_rewrite no seu site.

1º Exemplo:

RewriteRule ^([a-z,0-9,A-Z,_-]+)\/([a-z,0-9,A-Z,_-]+)\/([a-z,0-9,A-Z,_-]+)\/?$ exemplo1.php?dia=$1&mes=$2&ano=$3

Entendendo a linha acima:

RewriteRule – Define o início de uma regra de reescrita;
([a-z,0-9,A-Z,_-]+) – Todos os caracteres (Números e Letras) + _ -;
\/ – Barras;
\/? – Uma barra ou vazio.

2º Exemplo:

URL: http://www.meudominio.com.br/artigos/26/12/2014/20

Regra:
RewriteRule ^artigos\/([a-z,0-9,A-Z,_-]+)\/([a-z,0-9,A-Z,_-]+)\/([a-z,0-9,A-Z,_-]+)\/([a-z,0-9,A-Z,_-]+)\/?$ exemplo2.php?sessao=artigos&dia=$1&mes=$2&ano=$3&id=$4

Certo. E agora? Qual a diferenca entre o 1º e o 2º exemplo?

A diferença é que ele manipula uma URL “/artigos/” somente se for www.meudominio.br/artigos/…, caso seja www.meudominio.com.br/10/10/2014, ele não irá executar a segunda regra.

As alterações todas juntas para o arquivo .htaccess:

RewriteEngine on
RewriteRule ^artigos\/([a-z,0-9,A-Z,_-]+)\/([a-z,0-9,A-Z,_-]+)\/([a-z,0-9,A-Z,_-]+)\/([a-z,0-9,A-Z,_-]+)\/?$ exemplo2.php?sessao=artigos&dia=$1&mes=$2&ano=$3&id=$4
RewriteRule ^([a-z,0-9,A-Z,_-]+)\/([a-z,0-9,A-Z,_-]+)\/([a-z,0-9,A-Z,_-]+)\/?$ exemplo1.php?dia=$1&mes=$2&ano=$3

Para os scripts receberem as variáveis criadas pelo mod_rewrite:

Para o 1º exemplo:

<?php
echo “Digita via url amigáveis: $dia/$mes/$ano“;
?>

Para o 2º exemplo:

<?php
echo “Digita via url amigáveis:

Sessão: $sessao

Dia: $dia

Mes: $mes

Ano: $ano

Id: $id
“;
?>

No mais é isto. A utilização do mod_rewrite é recomendada para as práticas de otimização da engine de busca (SEO) e vem sendo cada vez mais utilizada.

Caso possua quaisquer outras dúvidas, entre em contato com o nosso Suporte Técnico.

Deixe um comentário