Pular para o conteúdo
Início » Entendendo o arquivo .htaccess e como habilitar o mod_rewrite no Apache

Entendendo o arquivo .htaccess e como habilitar o mod_rewrite no Apache

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 em https://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

  1. 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
  1. 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
  1. 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 arquivo 000-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>
  1. 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

  1. 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
  1. 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>
  1. 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.

  1. 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
  1. 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 como https://seusite.com/produto.php?nome=camiseta em https://seusite.com/produtos/camiseta.
  • Redirecionar uma página antiga para uma nova:
    apache RewriteEngine On RewriteRule ^paginavelha$ /novapagina [R=301,L]
  1. 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.