Como habilitar o mod_rewrite no Apache2 no Debian ou Ubuntu
Se você instalou o servidor Apache HTTP via apt-get
ou aptitude
em sistemas Ubuntu ou Debian, ele tem o módulo mod_rewrite
instalado, mas não ativado por padrão. Após a instalação do servidor web Apache, você precisa ativar mod_rewrite
explicitamente para aproveitar seus benefícios.
O que é mod_rewrite
?
O servidor da web Apache HTTP possui recursos extensíveis que são realizados pela noção de módulos conectáveis. Ao construir o servidor web Apache, você compila um conjunto de módulos que considera necessários e os incorpora ao servidor web. Um desses módulos é chamado mod_rewrite
, que é responsável por reescrever dinamicamente URLs de sites no lado do servidor. Por exemplo, quando o usuário solicita http://myserver.com/my_category/my_post.html
, a URL solicitada pode ser traduzida por mod_rewrite
para http:/ /myserver.com/post.php?category=100&post=200
, que é então manipulado pelo mecanismo de back-end do servidor web.
Por que usar mod_rewrite
?
Webmasters geralmente usam mod_rewrite
para melhorar a facilidade de uso e facilidade de busca de sites da web, expondo URLs mais memoráveis e rastreáveis para o mundo. Além disso, pode ajudar a ocultar informações confidenciais, como strings de consulta de solicitações de URL e, portanto, aumentar a segurança do site.
Como habilitar mod_write
no Apache2
A instalação padrão do Apache2 vem com mod_rewrite
instalado. Para verificar se este é o caso, verifique a existência de /etc/apache2/mods-available/rewrite.load
.
$ cat /etc/apache2/mods-available/rewrite.load
LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so
Para habilitar e carregar mod_rewrite
no servidor web Apache2, execute o restante das etapas.
$ sudo a2enmod rewrite
O comando acima criará um link simbólico em /etc/apache2/mods-enabled
.
$ ls -al /etc/apache2/mods-enabled/rewrite.load
lrwxrwxrwx 1 root root 30 Dec 9 23:10 /etc/apache2/mods-enabled/rewrite.load -> ../mods-available/rewrite.load
Em seguida, abra o arquivo a seguir e substitua todas as ocorrências de AllowOverride None
por AllowOverride all
.
$ sudo vi /etc/apache2/sites-available/default
Por fim, reinicie o Apache2.
No Ubuntu 14.10 ou Debian 7 ou anterior:
$ sudo service apache2 restart
No Ubuntu 15.04 ou Debian 8 ou posterior:
$ sudo systemctl start apache2