Todo mundo que já programou em PHP, ou mesmo qualquer outra linguagem voltada à Web, já deve ter se deparado com URLs do tipo:
http://www.site.com/produto.php?sub=telefonia&id=celulares&pagina=05
Isso gera 2 complicações:
1- é "feio" pro cliente uma URL cheia de caracteres que dificultam a leitura, e ainda reduz drasticamente a probabilidade de se memorizar a URL.
2- a maioria dos sites de busca não vão indexar essa página, eles ignoram a GET String e tentarão indexar somente http://www.site.com/produto.php portanto nao indexará seus produtos. (nota: eu *acho* que o Google agora indexa páginas assim, mas não tenho certeza)
Uma URL que resolveria ambos os problemas poderia ser escrita assim:
http://www.site.com/produtos/telefonia/celulares/05
Muito melhor, não é? E os sites de busca indexarão corretamente. Mas como fazer isso sem precisar criar todos os diversos diretórios?
Com mod_rewrite é simples:
Na raiz do site, crie um arquivo .htaccess contendo o seguinte:
RewriteEngine On
RewriteRule ^produtos/([a-z]+)/([a-z]+)/?([0-9]+)?$ produto.php?sub=$1&id=$2&pagina=$3
E é só! Todo accesso será redirecionado internamente pelo apache, de acordo com a expressão regular, sem o cliente notar. Nice, eh? ;)
Nota: Alguns hosts bloqueiam essa possibilidade (haja admin tosco nesse mundo). Outros, porém, simplesmente náo sabem como utilizar e deixam a configuração padrão. Para utilizar é necessário que o diretório tenha a opção "FollowSymLinks" habilitada, e, obviamente, que você tenha acesso a utilizar .htaccess, e RewriteRules dentro do mesmo. Em todo caso, é só uma questão de convencer o admin ;)
Nota2: Este artigo foi escrito com base no Apache 1.3 - a sintaxe das expressões regulares para o Apache 2.0 mudou (de POSIX para Perl).
Só. Chega, né? =)