Quando desenvolvemos sites ou sistemas web dinâmicos nos deparamos com o grande uso de variáveis GET , que refletem em URLs nada amigáveis para os usuários e os sistemas de buscas. Um exemplo simples seria a seguinte URL
http://dominio.com.br/index.php?page=contato
Essa URL que tem como função nos levar a uma página de contato é de difícil acesso caso o usuário queira acessar diretamente a página.
Para solucionar esse problema é possível implementar em seu site ou sistema web as URL Amigáveis, que são URL mais simples que escondem todas as declarações de variáveis GET, por exemplo o caso anterior com URL amigável ficaria assim
http://dominio.com.br/contato
Ficando assim mais acessível para o usuário e seguindo o padrão exigido pelos sistemas de busca.
Como acontece
Quando tentamos acessar um site pelo navegador, exemplo http://dominio.com.br/index.php?page=contato, é feita uma requisição no servidor pedindo o resultado do endereço /index.php?page=contato e o servidor utiliza regras internas para identificar esse endereço, no caso as regras padrões buscam o endereço direto (index.php) com as variáveis GET definidas (page=contato) e o processam retornando o conteúdo processado.
As URLs amigaveis são basicamente novas regras que o servidor vai considerar quando é feito uma requisição, ou seja podemos definir que quando seja feita a requisição /contato (http://dominio.com.br/contato) ele processe o arquivo index.php com a variável GET page = contato e retorne o resultado desse processo, ou seja a nova regra determina que a página de processamento padrão será o index.php e o que estiver depois de dominio.com.br/ será o valor da variável GET page.
Como usar
Para podermos usar as URLs amigáveis primeiramente precisamos habilitar o modulo do apache que permite a reescrita das rotas de acesso, o modulo é o mod_rewrite, para habilitar-lo basta fazer
# a2enmod rewrite
depois reinicie o servidor apache
#/etc/init.d/apache2 restart
Com o modulo habilitado dentro do diretório raiz da página web crie um arquivo .htaccess
$ touch .htaccess
o arquivo .htaccess é um arquivo de configuração e acesso do apache, eles são lidos sempre que você tenta acessar algum conteúdo de dentro da pasta onde ele se encontra, nesse arquivo pode se definir bloqueios, redirecionamento e reescrita de URL que será o que utilizaremos.
Agora basta escrevermos no arquivo .htaccess as novas regras, vamos criar a regra para o exemplo apresentado em cima, vou colocar o conteúdo do .htaccess direto e depois explico cada linha
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^contato/?$ /index.php?page=contato [NC,L] </IfModule>
Vamos entender o que cada linha faz:
Nas linhas 1 e 6 se encontra o início e o final da tag IfModule, essa tag faz com que todo o conteúdo dentro dela seja executado se o modulo descrito estiver ativado, no nosso caso o mod_rewrite.
Na linha 2 ativamos o recurso de reescrita de regras com RewriteEngine On.
Na linha 3 determinamos o diretório que será acessado pela web, no nosso caso como estamos acessando direto da raiz ( http://localhost/ ) a nossa linha ficou assim RewriteBase / mas se estivéssemos acessando um diretório interno ( http://localhost/teste/ ) ficaria assim RewriteBase /teste/
Finalmente na linha 5 criamos nossa nova regra iniciamos a linha com o comando RewriteRule que faz com que o apache identifique que uma nova regra vai ser definida, em seguida colocamos uma expressão regular para validar a nova URL ^contato/?$, os símbolos ^ e $ servem para identificar o início e o fim da expressão regular respectivamente. Quando fazemos /? dizemos que a nova URL pode ter ou não no final uma /, para entender melhor as expressões regulares este site tem um bom material.
Em seguida da expressão regular que valida a nova URL definimos o destino que o apache vai ser direcionado, no caso /index.php?page=contato em seguida determinamos algumas flags da nova regra, no caso [NC,L], a flag NC (no case) determina que não hávera diferenciação de maiuscula e minuscula, e a flag L (last) determina que essa regra vai ser a ultima.
Bem, esse é um exemplo bem simples de como utilizar as URLs amigáveis, farei um próximo post com um uso mais avançado abordando mais as expressões regulares.