1001Ferramentas
🔧Dev

Gerador de .htaccess

Gera trechos de .htaccess para Apache: forçar HTTPS, redirecionar www, expirar cache, comprimir GZIP, bloquear IP.


    
  

O que é o .htaccess?

O .htaccess é um arquivo de configuração do Apache. Ele muda o comportamento do servidor diretório a diretório e costuma cobrir redirecionamentos, ajustes de segurança e regras de cache.

Os trechos que a ferramenta monta aqui podem ser combinados entre si. Depois é só colar o resultado no diretório raiz da sua aplicação. Vale lembrar que isso só tem efeito em servidores Apache com o mod_rewrite habilitado.

Tudo é gerado no seu navegador, sem enviar nada para servidor algum.

O que é o arquivo .htaccess?

O .htaccess (hypertext access) é o arquivo de configuração distribuído do Apache HTTP Server. Ele permite aplicar diretivas por diretório sem precisar editar o httpd.conf principal nem reiniciar o servidor. Cada .htaccess vale para o diretório onde está e para todos os subdiretórios abaixo, com regras herdadas que podem ser sobrescritas em níveis mais profundos.

A sintaxe é idêntica à do arquivo principal: uma diretiva por linha, com blocos opcionais como <IfModule> e <FilesMatch>. Os módulos mais usados a partir do .htaccess são mod_rewrite (reescrita de URL), mod_headers (cabeçalhos de resposta), mod_expires (cache do navegador), mod_deflate (compressão gzip) e mod_auth_basic (autenticação HTTP).

Para o .htaccess ser considerado, o administrador precisa definir AllowOverride com um valor diferente de None no bloco <Directory> correspondente. O padrão do Apache moderno é None, que ignora silenciosamente qualquer diretiva que você colocar no arquivo.

Quando usar (e quando NÃO usar) .htaccess

A documentação oficial do Apache recomenda evitar o .htaccess sempre que você puder editar o httpd.conf. O motivo é performance: com AllowOverride ativo, o Apache percorre todos os diretórios pais do arquivo requisitado a cada requisição, procurando .htaccess. Uma chamada a /www/htdocs/exemplo/index.html gera quatro verificações no sistema de arquivos mesmo que nenhum dos arquivos exista. Regras em .htaccess também são lidas e recompiladas a cada request, enquanto diretivas no httpd.conf são compiladas uma vez no startup.

Use .htaccess quando você não tem acesso root ao servidor (típico em hospedagens compartilhadas, cPanel, Plesk), quando um CMS como WordPress, Joomla ou Magento entrega o seu próprio .htaccess, ou quando precisa fazer ajustes rápidos e frequentes sem reiniciar o Apache. Evite-o em sites de alto tráfego nos quais você controla a máquina: coloque as mesmas regras em um <Directory> dentro do httpd.conf e mantenha AllowOverride None. O NGINX não tem equivalente e força esse estilo por design — parte do motivo de servir conteúdo estático mais rápido que um stack Apache + .htaccess típico.

Diretivas mais úteis

  • RewriteEngine On ativa o mod_rewrite. Sem isso, nenhuma regra é executada.
  • RewriteRule padrão substituição [flags] define a transformação. Flags comuns: [R=301] redirecionamento permanente, [L] última regra, [NC] case-insensitive, [QSA] preserva query string, [F] proibido (403).
  • RewriteCond Variável Padrão condiciona uma regra. Várias condições em sequência são combinadas com AND; use [OR] para OR.
  • Redirect 301 /antigo /novo e RedirectMatch 301 ^/antigo-(.*)$ /novo-$1 do mod_alias — mais simples do que rewrite para caminhos fixos.
  • Header set X-Frame-Options "SAMEORIGIN" e similares adicionam cabeçalhos de resposta.
  • ExpiresActive On + ExpiresByType image/png "access plus 1 year" definem o tempo de cache por tipo MIME.
  • AddType / AddHandler associam extensões a MIME types ou handlers.
  • AuthType Basic, AuthUserFile e Require valid-user implementam autenticação HTTP Basic.

Casos de uso comuns com exemplo

Forçar HTTPS — toda requisição HTTP recebe 301 para o equivalente em HTTPS, recomendação básica de SEO e segurança:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Canonicalizar www para não-www (ou vice-versa) para consolidar os sinais para os buscadores:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

Remover .html / URLs amigáveis — servir /sobre a partir de sobre.html e redirecionar (301) a forma antiga:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^([^.]+)$ $1.html [L]
RewriteCond %{THE_REQUEST} \s/+([^\s]+)\.html [NC]
RewriteRule ^ /%1 [R=301,L]

Segurança

Bloqueie hotlinking de imagens, negue bots óbvios, esconda arquivos sensíveis e adicione cabeçalhos defensivos:

# Bloqueia dotfiles e o próprio .htaccess
<FilesMatch "^\.|\.(env|git|sql|bak|log)$">
  Require all denied
</FilesMatch>

# Desativa listagem de diretório
Options -Indexes

# Anti-hotlinking
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?meusite\.com\.br [NC]
RewriteRule \.(jpe?g|png|gif|webp)$ - [F,NC]

# Bloqueio de IP específico
<RequireAll>
  Require all granted
  Require not ip 203.0.113.5
</RequireAll>

# Cabeçalhos defensivos
Header set X-Frame-Options "SAMEORIGIN"
Header set X-Content-Type-Options "nosniff"
Header set Referrer-Policy "strict-origin-when-cross-origin"

Performance: gzip e cache

Comprima respostas de texto e oriente o navegador a guardar ativos estáticos em cache por períodos longos. Esses dois blocos costumam render 10–30 pontos no Lighthouse:

<IfModule mod_deflate.c>
  AddOutputFilterByType DEFLATE text/html text/css text/plain
  AddOutputFilterByType DEFLATE application/javascript application/json
  AddOutputFilterByType DEFLATE image/svg+xml font/woff2
</IfModule>

<IfModule mod_expires.c>
  ExpiresActive On
  ExpiresByType text/css "access plus 1 year"
  ExpiresByType application/javascript "access plus 1 year"
  ExpiresByType image/png "access plus 1 year"
  ExpiresByType image/webp "access plus 1 year"
  ExpiresByType text/html "access plus 1 hour"
</IfModule>

Erros frequentes

  • 500 Internal Server Error após editar — quase sempre erro de sintaxe ou diretiva proibida pelo AllowOverride. Consulte o error_log.
  • Regras de rewrite ignoradasmod_rewrite desligado (a2enmod rewrite) ou AllowOverride None.
  • Loop infinito de redirecionamento — falta uma condição que exclua a URL já reescrita (ex.: esquecer o %{HTTPS} off).
  • Confusão com RewriteBase em instalações em subdiretório — declare RewriteBase /subdir/ explicitamente.
  • Header / Expires sem efeito — módulo não carregado; envolva em <IfModule> para falhar graciosamente.

Perguntas frequentes

O .htaccess funciona em NGINX? Não. O NGINX não tem configuração por diretório; as regras precisam ser traduzidas para blocos server ou location do nginx.conf.

Onde colocar o arquivo? Na raiz do site (ex.: /var/www/html/) para regras globais. O nome começa com ponto, então fica oculto em sistemas Unix.

301 ou 302? Use [R=301] para mudanças permanentes (buscadores transferem o ranqueamento) e [R=302] só para redirecionamentos temporários.

Ele deixa o site mais lento? Sim, marginalmente — toda requisição percorre a árvore de diretórios atrás de arquivos .htaccess. As regras de compressão e cache que ele permite quase sempre compensam de sobra.

O arquivo gerado é seguro para subir direto? Teste em uma cópia de homologação, mantenha backup do arquivo anterior e verifique o error_log do Apache depois do deploy.

Gere regras de .htaccess para Apache

O arquivo .htaccess comanda o comportamento do servidor Apache, mas a sua sintaxe, baseada em mod_rewrite e diretivas específicas, tem fama de difícil. Este gerador monta para você os trechos mais úteis, sem exigir que você decore essas regras.

Ele dá conta de tarefas frequentes: forçar HTTPS, redirecionar com ou sem www, configurar expiração de cache do navegador e ativar a compressão GZIP. Escolha o que precisa e a ferramenta entrega o bloco pronto para colar no .htaccess, deixando o site mais rápido e seguro.

A geração roda no próprio navegador. Quem hospeda sites em Apache e quer aplicar boas práticas, mas se perde na sintaxe do mod_rewrite, encontra aqui um baita atalho.

Ferramentas Relacionadas