Configurar regras e redirecionamentos usando .htaccess

O ficheiro .htaccess é um ficheiro de configuração ao nível do diretório, suportado pelo servidor web Apache. Permite-te modificar as definições do servidor web (como ativar ou desativar funcionalidades) para uma conta específica, sem afetar a configuração global do servidor.

Este ficheiro aplica as suas definições a todo o diretório onde está localizado, incluindo todos os ficheiros e subdiretórios dentro desse diretório. Quaisquer alterações feitas no ficheiro .htaccess são aplicadas instantaneamente, sem necessidade de reiniciar o servidor.

Como localizar o ficheiro .htaccess

Para encontrares o ficheiro .htaccess:  

1. Vai à tua conta Spaceship >> escolhe Hosting Manager em Launchpad >> Gerir ao lado de um plano de alojamento >> Ficheiros e Armazenamento >> Gerir Ficheiros junto ao nome do site.

2. Serás redirecionado para a pasta raiz do domínio. 

3.  Se precisares de editar o ficheiro .htaccess do domínio, localiza o ficheiro .htaccess na pasta raiz do domínio, clica com o botão direito sobre ele e escolhe a opção Editar :


NOTA: Garante que "Mostrar ficheiros ocultos (dotfiles)" está ativado no menu Definições:


4. Se não existir um ficheiro .htaccess no Gestor de Ficheiros, podes criar um novo com o botão + Ficheiro:


5. Já podes adicionar as tuas próprias regras de configuração e guardá-las.
   

Lista de regras .htaccess mais comuns

Bloqueio 

Este método permite-te bloquear utilizadores com base no endereço IP ou domínio. É especialmente útil para restringir o acesso a visitantes indesejados ou para limitar o acesso a secções específicas do teu site, como a área de administração, apenas ao proprietário.

Para implementares regras de bloqueio específicas, cria um ficheiro .htaccess com o seguinte:

(Para permitir o acesso a todos os outros e bloquear utilizadores com o endereço IP X.X.X.X)

<RequireAll>

Require all granted

Require not ip X.X.X.X

</RequireAll>

(Para bloquear todos os visitantes exceto os IPs específicos X.X.X.X e Y.Y.Y.Y)

<RequireAll>

Require all denied

Require ip X.X.X.X

Require ip Y.Y.Y.Y

</RequireAll>

NOTA: Não utilizes as diretivas descontinuadas Allow, Deny e Order com a nova diretiva Require .

Mod_Rewrite (regras de redirecionamento)

O Mod_Rewrite define como as páginas web e URLs são apresentadas aos visitantes.

Por defeito, o Mod_Rewrite associa um URL a um caminho correspondente no sistema de ficheiros. No entanto, também pode redirecionar um URL para outro.

Antes de configurares um redirecionamento, é importante escolheres o tipo de redirecionamento que melhor se adapta às tuas necessidades:

  • Redirecionamento Permanente (301): Este redirecionamento envia um código de estado 301, indicando que a página foi movida permanentemente. É armazenado em cache no navegador, sinalizando aos motores de busca e agentes de utilizador para atualizarem o URL nas suas bases de dados. Este é o tipo de redirecionamento mais comum.

  • Redirecionamento Temporário (302): Este redirecionamento envia um código de estado 302, indicando que a mudança é temporária. O navegador não irá guardar este redirecionamento em cache e, embora redirecione visitantes e motores de busca, a página original continuará a ser indexada. Este tipo de redirecionamento é recomendado a menos que tenhas a certeza de que o URL não mudará no futuro.

Abaixo está uma lista de alguns dos redirecionamentos mais comuns e úteis que podes configurar através do ficheiro .htaccess:

Redirecionamento permanente de example1.com para example2.com

RewriteEngine On

RewriteCond %{HTTP_HOST} ^example1\.com$ [OR]

RewriteCond %{HTTP_HOST} ^www\.example1\.com$

RewriteRule ^(.*)$ "http\:\/\/example2\.com/$1" [R=301,L]

Redirecionamento temporário de exampledomain1.com para exampledomain2.com

RewriteEngine On

RewriteCond %{HTTP_HOST} ^example1\.com$ [OR]

RewriteCond %{HTTP_HOST} ^www\.example1\.com$

RewriteRule ^(.*)$ "http\:\/\/example2\.com\/" [R=302,L]

NOTA: Abaixo estão exemplos de redirecionamentos permanentes. Redirecionamentos temporários podem ser definidos substituindo [R=301,L] por [R=302,L] no final do código (quando necessário).

Redirecionamento de example1.com/subfolder para example2.com

RewriteEngine On

RewriteCond %{HTTP_HOST} ^example1\.com$ [OR]

RewriteCond %{HTTP_HOST} ^www\.example1\.com$

RewriteRule ^subfolder/$ "http\:\/\/example2\.com\/" [R=301,L]

Redirecionamento de HTTP para HTTPS para example.com

RewriteEngine On

RewriteCond %{HTTPS} !=on

RewriteRule .* https://example.com%{REQUEST_URI} [R,L]

ou

RewriteCond %{SERVER_PORT} 80

RewriteCond %{HTTP_HOST} ^example\.com$ [OR]

RewriteCond %{HTTP_HOST} ^www\.example\.com$

RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]

Redirecionamento de não-WWW para WWW

  • para qualquer domínio, o .htaccess entra em vigor:

RewriteEngine On

RewriteCond %{HTTP_HOST} !^www\.

RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

  • para um domínio específico:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^example\.com$ [NC]

RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]

Redirecionamento de WWW para não-WWW

  • para qualquer domínio o .htaccess entra em vigor:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]

RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

  • para um domínio específico:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^www\.example\.com [NC]

RewriteRule (.*) http://example.com/$1 [R=301,L]

Redirecionar todas as páginas de example.com para as páginas correspondentes em domain.com

RedirectMatch 301 ^/(.*)$ http://domain.com/$1

NOTA: Todos os nomes de páginas têm de coincidir em ambos os domínios ou o redirecionamento resultará numa mensagem de "Página não encontrada".

Redirecionar uma página para um novo URL

Redirect 301 /old_page.html http://www.domain.com/new_page.html

NOTA: Esta técnica pode ser útil para redirecionar uma página eliminada para um erro 404, ou para fazer ajustes de SEO após atualizares referências de conteúdo.

Autorização/autenticação 

Este tipo de regra define restrições de segurança para um diretório ou subdiretório. Podes proteger diretórios com palavra-passe para que qualquer visitante que tente aceder a eles seja solicitado a inserir um nome de utilizador e uma palavra-passe.

Para configurares esta proteção:  

1. Cria o diretório que queres proteger dentro da pasta /home/cpanel_user/.htpasswds/ (por exemplo, para domain.com/teste, o caminho é .htpasswds/domain.com/teste/).

2. Neste diretório, cria um ficheiro passwd e adiciona credenciais de acesso encriptadas usando um gerador online.

3. Adiciona as seguintes diretivas ao ficheiro .htaccess:

AuthType Basic

AuthName "Directory Name"

AuthUserFile "/home/cpanel_user/.htpasswds/public_html/test/passwd"

require valid-user

Páginas de erro personalizadas

Esta funcionalidade permite-te criar páginas de erro personalizadas para o teu site. É uma opção útil pois permite-te apresentar aos visitantes uma mensagem de erro que se enquadra no tema do teu site caso existam URLs quebrados. Isto ajuda a evitar mostrar o erro padrão '404 File Not Found' e, em vez disso, devolve uma página de erro personalizada com instruções para orientar os utilizadores de volta ao conteúdo do teu site, evitando confusão.

Para configurares uma página de erro personalizada, adiciona o seguinte texto a um ficheiro .htaccess:

ErrorDocument 404 /404.html

Esta linha instrui o servidor web Apache a carregar um ficheiro 404.html localizado na raiz do domínio sempre que ocorrer um erro 404 (Ficheiro Não Encontrado).

NOTA: Para criares páginas de erro personalizadas para outros erros (como 403 ou 500), basta substituíres 404 pelo código de erro correspondente e /404.html pelo caminho para o teu ficheiro de erro personalizado.

Desativar regras .htaccess existentes

Se precisares de desativar temporariamente algumas das regras existentes, por exemplo para testes, podes facilmente comentá-las. Para isso, basta adicionares um cardinal (#) no início da linha.

Como alternativa, podes desativar uma linha ou bloco de linhas selecionando-as e usando o atalho Ctrl + / .

É necessário um email válido