🇯🇵 日本語 | 🇺🇸 English | 🇪🇸 Español | 🇵🇹 Português | 🇹🇭 ไทย | 🇨🇳 中文

Guia Completo do .htaccess: Como Usar Redirecionamentos, Reescrita de URL e Controlo de Acesso

Ao longo desta série, construímos uma base sólida na administração de servidores, desde os conceitos básicos do Apache, à sua instalação, configuração com o `httpd.conf`, e até à gestão de múltiplos sites com virtual hosts. Foi um ótimo trabalho! E agora, chegamos ao capítulo final da nossa série sobre o Apache. Desta vez, vamos mergulhar a fundo no "ficheiro mágico" que é o seu maior aliado na gestão de sites: o .htaccess.

"Quero redirecionar uma página específica para um novo URL", "quero tornar os meus URLs curtos e elegantes", "quero proteger um diretório com senha"... todos estes desejos de um operador de site podem ser realizados com este único ficheiro. Neste artigo, vamos apresentar desde o uso básico do .htaccess até exemplos de configuração práticos, com código pronto a copiar e colar. Se dominar este artigo, a sua gestão de sites tornar-se-á muito mais livre e poderosa!


O que é o .htaccess? O Básico do Básico

O .htaccess é um ficheiro de configuração que permite controlar detalhadamente o comportamento do servidor ao nível do diretório (pasta) onde o Apache está a funcionar. Se o `httpd.conf` é a lei de todo o país, então o `.htaccess` é como um decreto local que se aplica apenas a uma região específica. O seu maior apelo é a capacidade de aplicar regras únicas por site, ou mesmo por pasta, sem ter de mexer na configuração global do servidor.

O pré-requisito fundamental para ativar o .htaccess

Para poder usar o `.htaccess`, é necessário que a anulação de configurações para esse diretório seja permitida. Isto é configurado no bloco <Directory> que especifica o diretório de destino, seja no `httpd.conf` ou no ficheiro de configuração de anfitriões virtuais (`httpd-vhosts.conf`).

Por favor, confirme que a seguinte linha, AllowOverride All, está presente. Se estiver definida como None, qualquer coisa que escreva no seu `.htaccess` será ignorada até que a altere para All e reinicie o Apache.

<Directory "/path/to/your/site">
    # Esta configuração precisa de ser "All"
    AllowOverride All
    Require all granted
</Directory>

Desde que esta configuração esteja correta, está tudo pronto. Basta criar um ficheiro chamado `.htaccess` com um editor de texto e carregá-lo para o diretório onde quer que as regras se apliquem.


1. Redirecionamento: Guiar os utilizadores para outra página

O redirecionamento é uma funcionalidade que encaminha automaticamente o acesso de um URL antigo para um novo, o que é essencial ao mudar um site ou alterar o URL de uma página. É também extremamente importante do ponto de vista do SEO.

Redirecionar uma página específica

Esta é a forma mais simples de redirecionamento. Encaminha o acesso de `old.html` para o novo `new.html`. O "301" indica que este encaminhamento é "permanente", o que informa os motores de busca que o URL se mudou definitivamente.

Redirect 301 /old.html http://www.example.com/new.html

2. Reescrita de URL: Embelezar os URLs com o mod_rewrite

O mod_rewrite é um módulo particularmente poderoso dentro do Apache que lhe permite reescrever URLs nos bastidores. Isto torna possível que o URL que o utilizador vê permaneça elegante, enquanto o servidor o processa internamente como um URL diferente.

Para usar o mod_rewrite, primeiro precisa de declarar que vai usar o motor de reescrita.

RewriteEngine On

Unificar "com www / sem www"

Isto unifica o URL para a versão `www.example.com`, independentemente de ser acedido com ou sem "www". Esta é uma configuração muito eficaz para SEO, para evitar dividir a reputação do seu site.

RewriteEngine On
# Se o nome do anfitrião acedido for 'example.com'
RewriteCond %{HTTP_HOST} ^example\.com$
# Redirecionar permanentemente todo o URL para 'www.example.com'
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]

Forçar HTTPS: forçar o acesso http a https

Do ponto de vista da segurança, o SSL sempre ativo (comunicação https) é agora obrigatório para os sites. Isto encaminha automaticamente qualquer acesso via http para https.

RewriteEngine On
# Se a ligação não for https
RewriteCond %{HTTPS} off
# Redirecionar todo o URL para o mesmo caminho em https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Fazer URLs dinâmicos parecerem estáticos

Por exemplo, para fazer um URL com parâmetros como `example.com/user.php?id=123` parecer um URL simples e limpo, como `example.com/user/123`.

RewriteEngine On
# Se o URL estiver no formato 'user/número'
RewriteRule ^user/([0-9]+)/?$ /user.php?id=$1 [L]

Esta configuração permite que os utilizadores continuem a usar um URL elegante, enquanto torna mais fácil para os programadores lidar com dados através de parâmetros.


3. Controlo de Acesso: Trancar áreas específicas

Pode aplicar proteção por senha (Autenticação Básica) a um diretório que apenas queira permitir que certas pessoas vejam, como uma página só para membros.

Configurar a Autenticação Básica

A Autenticação Básica requer dois ficheiros: o `.htaccess` e o `.htpasswd`, que contém a senha. Primeiro, coloque um ficheiro `.htaccess` com o seguinte conteúdo no diretório que quer trancar.

AuthType Basic
# A mensagem a exibir na caixa de diálogo de autenticação
AuthName "Área Secreta"
# Especificar a localização do ficheiro com nomes de utilizador e senhas
AuthUserFile /path/to/.htpasswd
# Permitir o acesso apenas a utilizadores válidos e autenticados
Require valid-user

Importante: O caminho para o `.htpasswd` especificado em `AuthUserFile` deve estar numa localização segura que não seja acessível a partir da web (fora da raiz do documento).


Criar o ficheiro .htpasswd

De seguida, crie o ficheiro `.htpasswd`, que armazena nomes de utilizador e senhas encriptadas. Isto é tipicamente gerado usando a ferramenta de linha de comandos `htpasswd` no servidor.

Ao criar um utilizador pela primeira vez (use a opção `-c` para criar um novo ficheiro):

htpasswd -c /path/to/.htpasswd user1

Ao adicionar um segundo utilizador ou mais (não use `-c`):

htpasswd /path/to/.htpasswd user2

Quando executar o comando, ser-lhe-á pedido para introduzir uma senha. Depois de a introduzir, o ficheiro `.htpasswd` será criado ou atualizado no caminho especificado.


Outros exemplos de configurações úteis

Exibir páginas de erro personalizadas

Quando ocorre um erro como "404 Not Found", isto permite-lhe exibir uma página com design personalizado em vez da página de erro simples do servidor.

ErrorDocument 404 /errors/404.html
ErrorDocument 500 /errors/500.html

Negar o acesso de endereços IP específicos

Isto bloqueia tráfego incómodo ou o acesso de endereços IP específicos.

Require all granted
Require not ip 123.45.67.89
Require not ip 192.168.1.0/24

Conclusão

Ótimo trabalho! Com isto, concluímos a nossa série de 4 partes sobre o Apache. Nesta última parte, aprendemos sobre algumas das poderosas funcionalidades do `.htaccess`, o ficheiro que fornece uma solução para todas aquelas configurações "boas de ter" na gestão de sites.

O `.htaccess` é incrivelmente profundo, e o que apresentámos aqui é apenas um pequeno exemplo. No entanto, ao aplicar os conceitos básicos que aprendeu hoje, pode alcançar todo o tipo de controlo, limitado apenas pelas suas ideias. Por favor, experimente várias configurações, sinta-as a "funcionar" e perceba como é conveniente.

Ao entender o que se passa nos bastidores de um servidor web, as suas competências como criador web devem ter ganho ainda mais profundidade. Esperamos que a sua vida no desenvolvimento web daqui para a frente seja ainda mais divertida и criativa!