Introdução:
Para quem não sabe para que serve o Módulo Rewrite do Apache, nesse tutorial vou explicar, além de ensinar a ativá-lo.
Nesse tutorial vou supor que você já tem o Apache instalado no Ubuntu. Eu testei no Ubuntu 8.04, 8.10 e 9.04, mas deve funcionar em qualquer distribuição baseada em Debian.
Para que serve o Módulo Rewrite?
Serve para conseguir URL's amigáveis.Por exemplo: ao invés de estar "pagina.php?nome=ubuntu-ativando-modulo-rewrite", com o Módulo Rewrite fica assim: "ubuntu-ativando-modulo-rewrite.html".
Perceba que a página é um script PHP, no entanto a página está com uma extensão HTML. Na verdade essa página não existe de verdade, ela é gerada dinamicamente pelo Módulo Rewrite.
Com o Módulo Rewrite o seu site é melhor indexado pelos mecânismos de busca. Não expoe a tecnologia de seu site e se necessitar mudar a tecnologia de seu site, não perderá as URL's.
Ativando o Módulo Rewrite:
Abra um terminal e cole os comandos abaixo:
1- Copie o módulo rewrite da pasta mods-available para a pasta mods-enabled:
sudo cp /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/
2- Edite o arquivo de configuração “default” que está na pasta “sites-available”:
sudo gedit /etc/apache2/sites-available/default
3- Modifique “AllowOverride None” da secção Directory raiz (’/var/www’) para “AllowOverride All”
De:
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Para:
Options Indexes FollowSymLinks MultiViews
AllowOverride All
4- Reinicie o servidor Apache:
sudo /etc/init.d/apache2 restart
Testando:
Para usar as propriedades do Módulo Rewrite, você deve criar um arquivo com o nome ".htaccess". Nele você vai colocar as regras de reescrita, além de outras configurações do Apache. Esse arquivo funciona recursivamente ou seja altera as propriedades da pasta em que está e em todas as subpastas subsequentes.
Veja um conteúdo de exemplo de um arquivo .htaccess que redirecionará todas as requisições com extensão .html para o arquivo index.php para a $_GET["nome"] :
RewriteEngine on
RewriteRule ^([A-Za-z0-9_-]*)\.html$ index.php?nome=$1
não funcionou, será que falta alguma cofiguração?
ResponderExcluir