Como ativar o mod_rewrite no ficheiro .htaccess

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.

Apache
Apache

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.

Nazario

Meu nome é Nazario, sou criador e editor-chefe do setiwik.ru. Trabalho há mais de 10 anos na área de tecnologias de TI, com especialização em administração de sistemas Linux/Windows.

Nas páginas do site, compartilho minha experiência em administração de sistemas, resolução de problemas práticos e configuração de soluções de servidores. Publiquei guias e tutoriais detalhados para ajudar os usuários a trabalhar de forma eficiente com diferentes sistemas operacionais.

Fique de olho nas atualizações do setiwik.ru – aqui você encontrará informações atualizadas sobre soluções modernas de TI e dicas úteis para trabalhar com sistemas Linux e Windows.

Deixe um comentário