O que é .htaccess? Um Guia Completo para Configuração do Apache
O ficheiro .htaccess é uma das ferramentas mais poderosas disponíveis para administradores web que trabalham com servidores Apache. Quer necessite gerir redirecionamentos de URL, forçar HTTPS, restringir acesso por IP ou servir páginas de erro personalizadas, .htaccess oferece-lhe controlo granular ao nível do diretório sobre o comportamento do seu servidor — sem tocar na configuração principal do servidor.
Neste guia abrangente, cobriremos tudo o que precisa de saber sobre .htaccess: o que é, como funciona, como criar um, e os casos de uso mais importantes que todo o administrador web deve dominar.
O que é .htaccess?
O ficheiro .htaccess — abreviatura de “hypertext access” — é um ficheiro de configuração oculto em texto simples utilizado pelo Apache HTTP Server. Permite-lhe definir diretivas de servidor numa base por diretório, o que significa que as regras que coloca num ficheiro .htaccess se aplicam imediatamente a todos os ficheiros e subdiretórios dentro da pasta onde o ficheiro reside.
Ao contrário das alterações feitas ao ficheiro de configuração principal do Apache (httpd.conf), as regras .htaccess entram em vigor instantaneamente — não é necessário reiniciar o servidor. Isto torna-o especialmente útil em ambientes de alojamento partilhado onde os utilizadores não têm acesso root à configuração principal do servidor.
Sempre que um utilizador solicita um recurso do seu website, Apache lê o ficheiro .htaccess no diretório relevante e aplica as regras configuradas. Isto torna-o flexível e poderoso — mas também um ficheiro que deve ser gerido com cuidado.
> Quem utiliza .htaccess? Programadores web, especialistas em SEO e administradores de sistemas que trabalham em ambientes de alojamento baseados em Apache — incluindo planos de Alojamento Web Partilhado e Alojamento VPS — dependem de .htaccess diariamente para controlar o comportamento do website.
Como Criar um Ficheiro .htaccess
Criar um ficheiro .htaccess é simples, mas algumas regras devem ser seguidas com precisão:
- Utilize um editor de texto simples como Nano, Vim, Notepad++ ou qualquer editor de código.
- Nomeie o ficheiro exatamente
.htaccess— com um ponto inicial e sem extensão de ficheiro. O próprio nome do ficheiro é a extensão. - Coloque o ficheiro no diretório raiz do seu website (geralmente denominado
public_html,wwwouhtdocs) ou em qualquer subdiretório onde pretenda que regras específicas se apliquem. - Guarde-o como texto simples — nunca como um documento de texto formatado ou enriquecido.
- Defina as permissões corretas do ficheiro:
644é o nível de permissão recomendado, que permite ao proprietário ler e escrever enquanto restringe outros a acesso apenas de leitura.
Num servidor Linux via SSH, pode criar o ficheiro instantaneamente com:
nano /var/www/html/public_html/.htaccessUma vez guardado, Apache começará a aplicar as regras imediatamente.
Utilizações Comuns de .htaccess
Abaixo estão as diretivas .htaccess mais importantes e amplamente utilizadas, completas com exemplos de código prático.
1. Redirecionamento de URLs
Os redirecionamentos são essenciais quando as páginas são movidas, renomeadas ou permanentemente eliminadas. Preservam o valor de SEO e garantem que os utilizadores são enviados para a localização correta.
Redirecionamento Permanente 301 (Página Movida)
Redirect 301 /old-page.html https://www.example.com/new-page.htmlIsto envia tanto utilizadores como rastreadores de motores de busca do URL antigo para o novo, passando a totalidade da equidade de ligação no processo.
Redirecionamento Temporário 302
Redirect 302 /sale https://www.example.com/seasonal-offers.htmlUtilize um 302 quando o redirecionamento é temporário, como durante uma promoção ou período de manutenção.
Redirecionar um Domínio Inteiro
RewriteEngine On
RewriteCond %{HTTP_HOST} ^olddomain.com$ [NC]
RewriteRule ^(.*)$ https://www.newdomain.com/$1 [L,R=301]Isto é particularmente útil durante migrações de domínio — um cenário comum ao registar um novo domínio através de um serviço como Registo de Domínios.
2. Reescrita de URL para URLs Amigáveis para SEO
A reescrita de URL transforma URLs dinâmicos, pesados em parâmetros, em estruturas limpas, legíveis e amigáveis para SEO. Esta é uma das utilizações mais impactantes de .htaccess para melhorar as classificações dos motores de busca.
Ativar o Motor de Reescrita
RewriteEngine OnEsta linha deve aparecer antes de qualquer diretiva RewriteRule.
Reescrever URLs Dinâmicos para URLs Limpos
RewriteRule ^products/([a-zA-Z0-9-]+)$ product.php?item=$1 [L]Isto reescreve example.com/products/blue-sneakers para example.com/product.php?item=blue-sneakers — de forma transparente, sem alterar o que o utilizador vê no navegador.
Remover Extensões .php de URLs
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^([^.]+)$ $1.php [NC,L]Isto permite que URLs como example.com/about sirvam about.php sem expor a extensão do ficheiro.
3. Forçar HTTPS
Forçar todo o tráfego através de HTTPS é um requisito de segurança fundamental e um sinal de classificação confirmado pelo Google. Se tem um Certificado SSL instalado, utilize as seguintes regras .htaccess para garantir que todo o tráfego HTTP é automaticamente redirecionado para a versão segura do seu site.
Forçar HTTPS em Todo o Site
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]Forçar HTTPS e Remover www (URL Canónico)
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www. [NC]
RewriteRule ^(.*)$ https://example.com/$1 [L,R=301]Isto garante que o seu site é sempre servido a partir de um único URL HTTPS canónico — crítico tanto para SEO como para segurança.
4. Configurar Páginas de Erro Personalizadas
Em vez de exibir mensagens de erro genéricas do navegador, pode configurar .htaccess para servir páginas de erro personalizadas com marca, amigáveis ao utilizador, que mantêm os visitantes no seu site.
Códigos de Erro HTTP Comuns
ErrorDocument 400 /errors/400.html
ErrorDocument 401 /errors/401.html
ErrorDocument 403 /errors/403.html
ErrorDocument 404 /errors/404.html
ErrorDocument 500 /errors/500.htmlMelhores Práticas para Páginas de Erro Personalizadas:
- Inclua a navegação do seu site para que os utilizadores possam encontrar o que procuram.
- Adicione uma barra de pesquisa para ajudar os utilizadores a recuperar de erros 404.
- Mantenha o design consistente com a marca do seu site principal.
- Evite loops de redirecionamento — as páginas de erro devem ser ficheiros HTML estáticos.
5. Restringir Acesso por Endereço IP
.htaccess oferece-lhe controlo fino sobre quem pode aceder ao seu site ou diretórios específicos com base no endereço IP. Isto é inestimável para proteger painéis de administração, ambientes de teste ou diretórios sensíveis.
Bloquear um Endereço IP Específico
Deny from 192.168.1.100Bloquear Vários Endereços IP
Deny from 192.168.1.100
Deny from 10.0.0.50
Deny from 203.0.113.0/24Permitir Apenas IPs Específicos (Lista Branca)
Order Deny,Allow
Deny from all
Allow from 192.168.1.101
Allow from 203.0.113.25Esta configuração bloqueia todo o tráfego exceto dos endereços IP explicitamente listados — ideal para bloquear um painel de administração WordPress ou um site de teste.
6. Proteger Diretórios com Palavra-passe
Pode adicionar Autenticação HTTP Básica a qualquer diretório utilizando .htaccess combinado com um ficheiro .htpasswd.
Passo 1: Criar o ficheiro .htpasswd
Utilize o utilitário htpasswd no seu servidor:
htpasswd -c /etc/apache2/.htpasswd yourusernamePasso 2: Adicione o seguinte ao seu ficheiro .htaccess
AuthType Basic
AuthName "Restricted Area"
AuthUserFile /etc/apache2/.htpasswd
Require valid-userQualquer pessoa que tente aceder ao diretório protegido será solicitada para um nome de utilizador e palavra-passe antes de ganhar acesso.
7. Controlar a Cache do Navegador
A cache adequadamente configurada melhora a velocidade de carregamento da página e reduz a carga do servidor — ambos fatores importantes para SEO e experiência do utilizador.
Definir Cabeçalhos de Expiração de Cache
<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/gif "access plus 1 year"
ExpiresByType image/webp "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>8. Bloquear Hotlinking
O hotlinking ocorre quando outros websites incorporam as suas imagens diretamente, consumindo a sua largura de banda sem a sua permissão. Bloqueie-o com .htaccess:
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https://(www.)?example.com/ [NC]
RewriteRule .(jpg|jpeg|png|gif|webp|svg)$ - [F,NC]Substitua example.com pelo seu domínio real. Isto retorna uma resposta 403 Forbidden a qualquer site externo que tente fazer hotlink das suas imagens.
9. Desativar Listagem de Diretório
Por padrão, Apache pode exibir o conteúdo de um diretório se nenhum ficheiro de índice estiver presente. Isto é um risco de segurança significativo que expõe a sua estrutura de ficheiros.
Desativar Navegação de Diretório
Options -IndexesEsta única linha impede que Apache gere listagens de diretório automáticas, retornando um erro 403 Forbidden em vez disso.
Considerações de Segurança e Desempenho
Embora .htaccess seja extremamente poderoso, deve ser utilizado responsavelmente. Aqui estão as considerações-chave que todo o administrador deve ter em mente:
Impacto no Desempenho
Apache lê o ficheiro .htaccess em cada solicitação ao servidor. Se o seu ficheiro .htaccess contém dezenas de regras complexas, isto adiciona overhead mensurável a cada solicitação. Para minimizar o impacto no desempenho:
- Mantenha as regras enxutas e bem organizadas — remova qualquer regra que já não seja necessária.
- Utilize
.htaccessapenas onde necessário — coloque-o apenas em diretórios que exijam regras específicas. - Considere mover regras para
httpd.conf— num ambiente onde tem acesso total ao servidor — como um Alojamento VPS ou Servidor Dedicado onde tem acesso root — colocar regras diretamente na configuração principal do Apache é significativamente mais rápido uma vez que é lido apenas uma vez no arranque.
Permissões de Ficheiro
Sempre defina as permissões do ficheiro .htaccess para 644:
chmod 644 /var/www/html/public_html/.htaccessIsto impede que utilizadores não autorizados modifiquem o ficheiro enquanto permite que Apache o leia.
Proteger o Próprio Ficheiro .htaccess
Impeça o acesso direto ao seu ficheiro .htaccess a partir da web:
<Files ".htaccess">
Order Allow,Deny
Deny from all
</Files>Testar e Resolver Problemas de Regras .htaccess
A sintaxe incorreta de .htaccess é uma das causas mais comuns de respostas 500 Internal Server Error. Siga estas melhores práticas para depurar problemas de forma eficiente:
Fazer Uma Alteração de Cada Vez
Nunca faça várias alterações simultaneamente. Aplique uma regra, teste-a, depois prossiga para a próxima. Isto torna fácil identificar qual regra causou um problema.
Verificar Registos de Erro do Apache
Os registos de erro do Apache são a sua ferramenta de diagnóstico principal:
# Ubuntu/Debian
tail -f /var/log/apache2/error.log
# CentOS/RHEL
tail -f /var/log/httpd/error_logComentar Regras Temporariamente
Utilize o carácter # para comentar regras que pretende desativar sem eliminar:
# RewriteRule ^old-page$ /new-page [R=301,L]Testar Redirecionamentos com curl
Utilize curl para verificar o comportamento de redirecionamento a partir da linha de comando:
curl -I http://www.example.com/old-page.htmlIsto retorna os cabeçalhos HTTP, incluindo o cabeçalho Location para redirecionamentos, sem carregar a página completa.
Utilizar um Testador de .htaccess Online
Várias ferramentas online gratuitas permitem-lhe testar regras de reescrita .htaccess contra URLs de amostra antes de as implementar no seu servidor em direto.
.htaccess em Diferentes Ambientes de Alojamento
A disponibilidade e comportamento de .htaccess depende do seu ambiente de alojamento:
| Tipo de Alojamento | Suporte .htaccess | Notas |
|---|---|---|
| Alojamento Partilhado | ✅ Suporte Completo | Tipicamente a única forma de configurar Apache |
| Alojamento VPS | ✅ Suporte Completo | Pode também editar httpd.conf diretamente para melhor desempenho |
| Servidores Dedicados | ✅ Suporte Completo | Acesso root completo; considere mover regras para configuração principal |
| Servidores Nginx | ❌ Não Suportado | Nginx utiliza um sistema de configuração diferente |
Se está num VPS com cPanel, pode gerir muitas funções .htaccess diretamente através da interface cPanel, incluindo redirecionamentos, proteção contra hotlink e privacidade de diretório — sem editar o ficheiro manualmente.
Perguntas Frequentes Sobre .htaccess
O .htaccess funciona em Nginx?
Não. .htaccess é exclusivo do Apache HTTP Server. Nginx utiliza um modelo de configuração diferente onde todas as regras são definidas em ficheiros de configuração de bloco de servidor. Se está a migrar de Apache para Nginx, terá de converter as suas regras .htaccess para sintaxe de bloco ###PPT_NO
