O mod_rewrite e o .htaccess são usados em conjunto para que os sites dinámicos possam apresentar URLs (endereços das páginas) mais amigáveis a quem visualiza o site e permitir a optimização para a procura pelos motores de busca (SEO).
A maior parte dos sites actualmente possui conteúdo dinâmico, normalmente criado a partir de valores de variáveis passados de alguma forma para uma página, surgindo urls do tipo index.php?id=53&seccao=21&autor=2
Este tipo de URL dificulta a memorização e pode mesmo causar problemas de segurança, pois expõe de certo modo informação do modo como o conteúdo é gerado.
Para que seja possível a sua implementação é necessário que o Apache já possua o módulo mod_rewrite. Assim, deste modo, consegue-se mascarar as informações sobre variáveis passadas como parâmetro.
Configuração do Apache:
1. No arquivo httpd.conf, localize as seguintes linhas
#LoadModule rewrite_module modules/mod_rewrite.so
#AddModule mod_rewrite.c
Retire o comentário (#) das duas linhas
2. Procure
Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
Mude de None para All, ficando assim
Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
3. Reinicie o Apache
4. Em seguida, crie um ficheiro, num editor de texto (em modo plain text), chamado .htaccess e guarde na raiz do seu directório web do servidor.
5. No arquivo .htaccess, insira o seguinte código:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .(/)?$ /index.php
</IfModule>
Linha 1 verifica se o mod_rewrite está activo, caso esteja, executa o bloco.
Linha 2 activa o mod_rewrite.
Linha 3 indica qual o directório base de todo conteúdo.
Linha 4 verifica se a url digitada é um ficheiro, caso seja para aqui.
Linha 5 verifica se a url digitada é um directório, caso seja para aqui.
Linha 6 define a expressão regular que será usada para os caminhos.
6. Salve o arquivo .htaccess.
Ler também usando o .htaccess num servidor Apache
Poxa, muito obrigado pela dica, funcionou perfeitamente no meu site!