O arquivo .htaccess
é um arquivo de configuração usado por servidores web que executam o Apache. Ele permite a customização de comportamentos do servidor em diretórios específicos, sem a necessidade de modificar diretamente a configuração global do servidor. O nome “.htaccess” vem de “hypertext access,” refletindo sua função principal: controlar permissões de acesso e outras funções do Apache.
O arquivo .htaccess
é amplamente utilizado para redirecionamentos, controle de cache, personalização de páginas de erro, proteção por senha, entre outras funcionalidades. Um dos usos mais comuns desse arquivo é em conjunto com o módulo mod_rewrite, que permite a criação de URLs amigáveis e redirecionamentos dinâmicos.
O que é o mod_rewrite?
O mod_rewrite é um módulo do Apache que oferece funcionalidades poderosas para reescrever URLs. Ele permite que você modifique a URL exibida no navegador sem alterar fisicamente os arquivos ou a estrutura de diretórios no servidor. Isso é muito útil para:
- Criar URLs amigáveis (por exemplo, transformar
https://nerdexpert.com.br/index.php?id=123
emhttps://nerdexpert.com.br/produtos/camiseta
). - Redirecionar usuários de uma URL antiga para uma nova.
- Forçar HTTPS, redirecionando automaticamente as requisições HTTP.
- Gerenciar roteamento de requisições em frameworks de aplicações web.
Habilitando o mod_rewrite no Apache
A instalação e configuração do mod_rewrite variam conforme a distribuição do Linux. Vamos ver como habilitar o módulo em servidores baseados em Ubuntu/Debian e RedHat/CentOS.
Habilitando o mod_rewrite em servidores Ubuntu/Debian
- Verificar a presença do Apache:
Primeiramente, verifique se o Apache está instalado e rodando no servidor:
sudo systemctl status apache2
Se o Apache não estiver instalado, você pode instalá-lo com:
sudo apt update
sudo apt install apache2
- Habilitar o mod_rewrite:
O mod_rewrite geralmente já está incluído na instalação do Apache, mas pode precisar ser ativado. Para habilitar o módulo, execute o seguinte comando:
sudo a2enmod rewrite
- Configurar o Apache para permitir o uso do
.htaccess
:
O arquivo.htaccess
só funciona em diretórios onde o Apache está configurado para permitir sua leitura. Para isso, é necessário editar o arquivo de configuração principal do Apache ou o arquivo de configuração do site (geralmente localizado em/etc/apache2/sites-available/
). Abra o arquivo de configuração do seu site (por exemplo, o arquivo000-default.conf
):
sudo nano /etc/apache2/sites-available/000-default.conf
Dentro do arquivo, localize a diretiva <Directory /var/www/html>
e altere AllowOverride None
para AllowOverride All
, permitindo que o Apache utilize as instruções no arquivo .htaccess
:
<Directory /var/www/html>
AllowOverride All
</Directory>
- Reiniciar o Apache:
Após realizar essas alterações, reinicie o Apache para que elas entrem em vigor:
sudo systemctl restart apache2
Agora o mod_rewrite está habilitado e pronto para uso no servidor Ubuntu/Debian.
Habilitando o mod_rewrite em servidores RedHat/CentOS
- Verificar a presença do Apache:
Em sistemas RedHat e CentOS, o Apache é conhecido como httpd. Primeiro, verifique se ele está instalado e em execução:
sudo systemctl status httpd
Caso o Apache não esteja instalado, faça a instalação com o comando:
sudo yum install httpd
- Habilitar o mod_rewrite:
O mod_rewrite também faz parte da instalação padrão do Apache nesses sistemas, mas pode não estar habilitado. Para habilitá-lo, edite o arquivo de configuração principal do Apache:
sudo nano /etc/httpd/conf/httpd.conf
Dentro desse arquivo, procure pela seção <Directory "/var/www/html">
e altere AllowOverride None
para AllowOverride All
, assim como no exemplo para sistemas baseados em Debian:
<Directory "/var/www/html">
AllowOverride All
</Directory>
- Reiniciar o Apache:
Após habilitar o mod_rewrite e ajustar a configuração do diretório, reinicie o Apache:
sudo systemctl restart httpd
Agora o mod_rewrite está habilitado em seu servidor RedHat/CentOS.
Configurando o arquivo .htaccess
Com o mod_rewrite ativado, você pode começar a adicionar regras de reescrita no arquivo .htaccess
no diretório de seu site. Vamos ver alguns exemplos de uso.
- Criar um arquivo
.htaccess
:
Navegue até o diretório raiz do seu site (por exemplo,/var/www/html
) e crie um arquivo.htaccess
:
sudo nano /var/www/html/.htaccess
- Adicionar regras de reescrita:
Aqui estão alguns exemplos básicos de regras que você pode adicionar ao arquivo:
- Redirecionar todas as requisições HTTP para HTTPS:
RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
- Criar URLs amigáveis:
RewriteEngine On RewriteRule ^produtos/([a-zA-Z0-9_-]+)$ produto.php?nome=$1 [L]
Isso transforma URLs comohttps://seusite.com/produto.php?nome=camiseta
emhttps://seusite.com/produtos/camiseta
. - Redirecionar uma página antiga para uma nova:
apache RewriteEngine On RewriteRule ^paginavelha$ /novapagina [R=301,L]
- Testar a configuração:
Após salvar o arquivo.htaccess
, teste acessando o site e verificando se as regras de reescrita estão funcionando como esperado. Se houver algum erro, verifique os logs de erro do Apache, que geralmente ficam em/var/log/apache2/error.log
ou/var/log/httpd/error_log
dependendo da distribuição.
O arquivo .htaccess
e o mod_rewrite são ferramentas poderosas que permitem grande flexibilidade na gestão de URLs, redirecionamentos e comportamento do servidor. Neste artigo, vimos como habilitar o mod_rewrite no Apache em sistemas baseados em RedHat e Ubuntu/Debian, além de exemplos práticos de uso no .htaccess
. Implementar essas técnicas pode melhorar a experiência do usuário e otimizar a estrutura do seu site para mecanismos de busca.
Sou um profissional na área de Tecnologia da informação, especializado em monitoramento de ambientes, Sysadmin e na cultura DevOps. Possuo certificações de Segurança, AWS e Zabbix.