Binatomy
Servidor web

Gerador de .htaccess

Construa depressa regras .htaccess para Apache: HTTPS, redirecionamento de www, compressão, cache e mais

Opções

# --- Rewrite rules ---
<IfModule mod_rewrite.c>
  RewriteEngine On

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

  # Redirect www to non-www
  RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
  RewriteRule ^(.*)$ https://%1/$1 [L,R=301]
</IfModule>

# --- Gzip compression ---
<IfModule mod_deflate.c>
  AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript
  AddOutputFilterByType DEFLATE application/javascript application/x-javascript application/json
  AddOutputFilterByType DEFLATE application/xml application/rss+xml image/svg+xml
</IfModule>

# --- Browser caching ---
<IfModule mod_expires.c>
  ExpiresActive On
  ExpiresByType image/jpg "access plus 1 year"
  ExpiresByType image/jpeg "access plus 1 year"
  ExpiresByType image/png "access plus 1 year"
  ExpiresByType image/webp "access plus 1 year"
  ExpiresByType image/svg+xml "access plus 1 year"
  ExpiresByType image/x-icon "access plus 1 year"
  ExpiresByType text/css "access plus 1 month"
  ExpiresByType application/javascript "access plus 1 month"
  ExpiresByType text/html "access plus 1 day"
</IfModule>
FAQ

Perguntas frequentes

O que convém saber sobre o ficheiro .htaccess

O que é o ficheiro .htaccess e onde se põe?

O .htaccess é um ficheiro de configuração do servidor Apache que permite definir regras ao nível da pasta: redirecionamentos, reescrita de endereços, segurança, cache e compressão. Põe-se na pasta raiz do site, normalmente public_html ou www, e vale para ela e para as subpastas. O nome começa por um ponto e não tem extensão.

Funciona em Nginx?

Não, o .htaccess é específico do Apache e de servidores compatíveis como o LiteSpeed. O Nginx não o usa: as mesmas regras têm de ser traduzidas na configuração do servidor, nos blocos server e location do nginx.conf. Se o seu alojamento for Nginx, o ficheiro não faz nada.

Depois de carregar o ficheiro o site dá erro 500, porquê?

Um erro 500 depois de mexer no .htaccess costuma querer dizer que falta um módulo necessário — mod_rewrite, mod_deflate, mod_expires — ou que há um erro de sintaxe. As regras aqui estão dentro de blocos <IfModule> precisamente para não rebentar se faltar um módulo. Se persistir, retire as regras uma a uma para descobrir a culpada e pergunte ao seu alojamento que módulos estão ativos. Guarde sempre uma cópia do ficheiro anterior.

O que é o ficheiro htaccess?

É o ficheiro de configuração que define regras para uma única pasta no Apache: redirecionamentos, reescrita de endereços, cache, compressão e restrições. Fica na pasta raiz do site.

Funciona também em Nginx?

Não, o htaccess é lido pelo Apache e por servidores compatíveis como o LiteSpeed. Em Nginx as mesmas regras têm de ser reescritas na configuração do servidor, nos blocos server e location.

Porque é que o site dá erro 500 depois da alteração?

Normalmente falta um dos módulos mod_rewrite, mod_deflate ou mod_expires, ou há um erro de sintaxe. É por isso que as regras geradas ficam dentro de blocos IfModule, que as desligam quando o módulo não existe.