sexta-feira, 5 de junho de 2009

Ativando o “Módulo Rewrite” do Apache no Ubuntu

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


Referências: How2ubuntu

Um comentário: