- O que é o mod_rewrite?
- Passo 1: Verifique o mod_rewrite no Linux
- Passo 2: Habilitando as regras do mod_rewrite no arquivo .htaccess
- Habilitando o mod_rewrite no Debian/Ubuntu
- Habilitando o mod_rewrite no RedHat/CentOS
- Passo 3: Crie ou edite o arquivo .htaccess
- Passo 4: Verificando a configuração
- Problemas comuns
- Conclusão
mod_rewrite é um módulo do Apache usado para reescrever dinamicamente URLs. Geralmente, ele é utilizado para criar URLs amigáveis, redirecionar tráfego ou gerenciar diferentes URLs para otimização de mecanismos de busca (SEO). Se você estiver trabalhando com o servidor web Apache, habilitar o mod_rewrite no arquivo .htaccess é uma tarefa simples.
Neste artigo, vou mostrar como habilitar o mod_rewrite e fazer as alterações necessárias no arquivo .htaccess.

O que é o mod_rewrite?
O mod_rewrite é um módulo do Apache que permite modificar os URLs antes que o servidor os processe.
Isso é muito útil para:
- Redirecionar URLs antigas para novas.
- Remover parâmetros de consulta (por exemplo, de setiwik.ru?page=about para setiwik.ru/about).
- Deixar os URLs mais limpos e amigáveis para o usuário.
- Ajudar no SEO através do uso de URLs legíveis.
Passo 1: Verifique o mod_rewrite no Linux
Primeiro, você precisa garantir que o Apache está instalado em seu sistema e que o mod_rewrite está habilitado.
apache2 -v [No Debian, Ubuntu e Mint]
httpd -v [no RHEL/CentOS/Fedora e Rocky/AlmaLinux]
Se o Apache estiver instalado, você verá informações sobre sua versão. Se não estiver, você precisará instalá-lo com o seguinte comando, conforme seu sistema operacional Linux.
sudo apt install apache2 [No Debian, Ubuntu e Mint]
sudo yum install httpd [No RHEL/CentOS/Fedora e Rocky/AlmaLinux]
Após a instalação do Apache, você precisará habilitar o mod_rewrite em distribuições baseadas em Debian e reiniciar o Apache para que as mudanças entrem em vigor. Aqui estão os comandos que você precisa executar.
sudo a2enmod rewrite
sudo systemctl restart apache2
Nas distribuições baseadas em RHEL, o mod_rewrite geralmente já vem habilitado por padrão, você só precisa reiniciar o Apache para ativá-lo.
sudo systemctl restart httpd
Passo 2: Habilitando as regras do mod_rewrite no arquivo .htaccess
Para habilitar as regras do mod_rewrite no arquivo .htaccess, você precisa garantir que o Apache está configurado para permitir a substituição do .htaccess.
Isso pode ser feito editando o arquivo de configuração do Apache.
Habilitando o mod_rewrite no Debian/Ubuntu
Abra o arquivo /etc/apache2/apache2.conf.
sudo nano /etc/apache2/apache2.conf
Procure pela seção que se parece com o seguinte:
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
Altere AllowOverride None para AllowOverride All.
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
Em seguida, salve e feche o arquivo e reinicie o Apache.
sudo systemctl restart apache2
Habilitando o mod_rewrite no RedHat/CentOS
Abra o arquivo /etc/httpd/conf/httpd.conf.
sudo nano /etc/httpd/conf/httpd.conf
Procure pela seção com:
<Directory "/var/www/html">
AllowOverride None
</Directory>
Altere AllowOverride None para AllowOverride All.
<Directory "/var/www/html">
AllowOverride All
</Directory>
Salve o arquivo e reinicie o Apache.
sudo systemctl restart httpd
Passo 3: Crie ou edite o arquivo .htaccess
Agora que o mod_rewrite está habilitado e o Apache está configurado para usar o .htaccess, é hora de criar ou editar o arquivo .htaccess no diretório raiz do seu site (/var/www/html/).
cd /var/www/html/
sudo nano .htaccess
Adicione suas regras do mod_rewrite. Por exemplo, aqui está uma regra geral de reescrita que redireciona todo o tráfego para o arquivo index.php:
<IfModule mod_rewrite.c>.
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/\ [L]
</IfModule>
Salve e feche o arquivo.
Passo 4: Verificando a configuração
Após fazer todas essas alterações, é necessário testar a configuração do mod_rewrite para garantir que ela esteja funcionando corretamente.
Abra o navegador e tente acessar a URL que deve ser reescrita. Por exemplo, se a sua regra de reescrita direciona tudo para o index.php, tente acessar http://seudominio.com/test. Se tudo estiver configurado corretamente, a solicitação deve ser processada pelo index.php, mesmo que você acesse /test. Se não funcionar, verifique os logs de erros do Apache para obter dicas. Para ver o log de erros do Apache, digite o comando:
sudo tail -f /var/log/apache2/error.log
Ou
sudo tail -f /var/log/httpd/error.log
Problemas comuns
500 Internal Server Error: Isso pode acontecer se houver um erro de sintaxe no seu arquivo .htaccess. Certifique-se de que o arquivo está corretamente formatado.
RewriteEngine não funciona: Certifique-se de que o mod_rewrite está habilitado e que o Apache permite a substituição do .htaccess (com a configuração AllowOverride All).
Conclusão
Habilitar o mod_rewrite no arquivo .htaccess é necessário para gerenciar os redirecionamentos de URL, criar links amigáveis e melhorar o SEO. Seguindo os passos descritos acima, você poderá facilmente habilitar e configurar o mod_rewrite no seu servidor Apache.