Existem várias opções para re­di­re­ci­o­nar um domínio ou sub­do­mí­nio para qualquer outra secção do próprio site ou para um endereço externo. Na maioria das vezes, o re­di­re­ci­o­na­mento é feito através do ficheiro .htaccess, do PHP, de tags meta HTML e do Ja­vaS­cript.

Re­di­re­ci­o­nar um domínio de um site ativo

As re­di­re­ções têm como função principal notificar os ser­vi­do­res de que o conteúdo de uma página web foi trans­fe­rido de um URL para outro. Isto é fun­da­men­tal se o endereço original receber links de entrada, se tiver sido marcado como favorito no navegador de um uti­li­za­dor ou se tiver uma posição de destaque nos re­sul­ta­dos dos motores de busca. Assim, ao re­di­re­ci­o­nar um site, está-se a informar o navegador ou o ras­tre­a­dor de que o conteúdo procurado foi trans­fe­rido, re­di­re­ci­o­nando-o au­to­ma­ti­ca­mente para a nova URL. Caso contrário, os vi­si­tan­tes do site en­con­tra­riam a mensagem genérica de erro 404.

Es­pe­ci­al­mente em projetos web co­mer­ci­ais, é pre­fe­rí­vel evitar esta situação. A maioria das lojas online oferece uma gama de produtos muito ampla e variada, o que se reflete numa grande quan­ti­dade de páginas web in­di­vi­du­ais. Assim, quando um artigo não está dis­po­ní­vel, os po­ten­ci­ais clientes são sim­ples­mente re­di­re­ci­o­na­dos para uma nova subpágina com produtos se­me­lhan­tes. Através do re­di­re­ci­o­na­mento eficiente dos fluxos de vi­si­tan­tes, qualquer projeto web está a minimizar sig­ni­fi­ca­ti­va­mente a taxa de rejeição.

O re­di­re­ci­o­na­mento de uma página web permite dis­po­ni­bi­li­zar o mesmo conteúdo em di­fe­ren­tes URLs, re­di­re­ci­o­nando todos os endereços al­ter­na­ti­vos para o domínio pre­ten­dido.

Tipos de re­di­re­ci­o­na­men­tos de domínios

Em geral, dis­tin­guem-se dois tipos de re­di­re­ci­o­na­men­tos: os que são re­a­li­za­dos a partir do servidor e os baseados no cliente. Para re­di­re­ci­o­nar um domínio a partir do servidor, é apre­sen­tado um código de estado HTTP ao agente do uti­li­za­dor (seja ele o navegador da Web ou o ras­tre­a­dor). Quando o re­di­re­ci­o­na­mento é baseado no cliente, é feito au­to­ma­ti­ca­mente, sem qualquer tipo de no­ti­fi­ca­ção. Isto faz com que estas últimas não sejam com­pa­tí­veis com todos os agentes de uti­li­za­dor, levando a que alguns uti­li­za­do­res per­ma­ne­çam no site original sem serem re­di­re­ci­o­na­dos para o novo domínio. É por isso que se recomenda, nor­mal­mente, re­di­re­ci­o­nar uma página web a partir do servidor. As soluções baseadas no cliente devem ser uti­li­za­das apenas quando as li­mi­ta­ções técnicas do servidor impedem o re­di­re­ci­o­na­mento.

Outro tipo de re­di­re­ci­o­na­mento consiste no re­en­ca­mi­nha­mento de um domínio sem alterar a URL, também conhecido como re­en­ca­mi­nha­mento trans­pa­rente. Neste caso, a URL apre­sen­tada ao uti­li­za­dor não muda, mesmo que o cliente tenha sido re­di­re­ci­o­nado para outro domínio e seja apre­sen­tado o conteúdo de outra página web. No entanto, uma vez que este tipo de re­di­re­ci­o­na­mento pode causar problemas com a indexação, bem como com a vi­su­a­li­za­ção da URL no navegador, não é re­co­men­dado.

Dica

Deseja con­fi­gu­rar o re­di­re­ci­o­na­mento de domínios? No artigo a seguir, no Centro de Ajuda da IONOS, irá aprender como re­di­re­ci­o­nar um domínio para outro.

Re­di­re­ci­o­na­mento a partir do servidor

Na maioria dos casos, utiliza-se um ficheiro .htaccess ou um script PHP para re­di­re­ci­o­nar um domínio. A vantagem destes métodos reside no facto de ser possível definir in­di­vi­du­al­mente qual o código de estado HTTP que deve ser apre­sen­tado ao agente do uti­li­za­dor, ca­rac­te­ri­zando assim os re­di­re­ci­o­na­men­tos como tem­po­rá­rios ou per­ma­nen­tes. Assim, dois códigos de estado HTTP revelam-se es­pe­ci­al­mente re­le­van­tes: o 301 e o 302:

  • 301 – Moved Per­ma­nen­tly: a página so­li­ci­tada pelo agente do uti­li­za­dor estará dis­po­ní­vel de forma per­ma­nente na URL re­di­re­ci­o­nada. A URL anterior será, portanto, inválida.
  • 302 – Moved Tem­po­ra­rily: a página so­li­ci­tada pelo agente do uti­li­za­dor está tem­po­ra­ri­a­mente dis­po­ní­vel na nova URL. Ao contrário do re­di­re­ci­o­na­mento 301, o endereço antigo continua a ser válido.

Caso o código de estado HTTP não seja definido es­pe­ci­fi­ca­mente, o servidor apre­sen­tará, por pre­de­fi­ni­ção, um código de estado 302, o que nem sempre é o ideal. Por isso, é acon­se­lhá­vel in­tro­du­zir ma­nu­al­mente todos os códigos de estado para evitar erros de indexação, como o sequestro de URL. Ao contrário do re­di­re­ci­o­na­mento 301, o código de estado 302 indica ao ras­tre­a­dor que a URL original deve continuar a ser indexada. Se per­ma­ne­cer ativa, a URL antiga irá competir com a nova no índice dos motores de busca.

Re­di­re­ci­o­na­mento .htaccess

.htaccess refere-se a um tipo de ficheiro de con­fi­gu­ra­ção para o servidor web Apache, através do qual é possível atribuir per­mis­sões de acesso a di­re­tó­rios e ficheiros. Estes ficheiros permitem aos pro­pri­e­tá­rios de páginas web efetuar os ajustes ne­ces­sá­rios nos di­re­tó­rios de um domínio ou sub­do­mí­nio. Uma das funções do ficheiro .htaccess consiste em re­di­re­ci­o­nar um domínio de um URL para outro a partir do servidor.

Com a ajuda do código no ficheiro .htaccess, pode con­fi­gu­rar re­di­re­ci­o­na­men­tos de domínio. Assim, ao criar um ficheiro .htaccess com o código seguinte no diretório principal, todas as visitas a partir do URL antigo serão re­di­re­ci­o­na­das para o domínio www.ejemplo.es:

Redirect 301 / http://www.ejemplo.es/
apa­che­conf

A linha de código começa com Redirect 301 e es­pe­ci­fica, portanto, a in­for­ma­ção que deve ser trans­mi­tida a partir do código de estado HTTP do servidor. A parte seguinte do código indica que o URL irá re­di­re­ci­o­nar o uti­li­za­dor para os conteúdos que, neste caso, como indica a barra invertida, abrangem todo o site. Por fim, a linha de comando inclui o endereço de destino completo para o qual o agente do uti­li­za­dor será re­di­re­ci­o­nado.

Este método também permite re­di­re­ci­o­nar ficheiros in­di­vi­du­ais. O código seguinte mostra um re­di­re­ci­o­na­mento de um domínio para outro com o ficheiro .htaccess:

Redirect 301 /directorio/documento-de-ejemplo.html http://www.ejemplo.es/ejemplo.html
apa­che­conf

Após o código de estado HTTP 301, encontra-se o diretório que será re­di­re­ci­o­nado de forma per­ma­nente (/directorio/documento-de-ejemplo.html), bem como a URL de destino (http://www.ejemplo.es/ejemplo.html).

Num servidor Apache com o módulo mod_rewrite ativado, o re­di­re­ci­o­na­mento per­ma­nente de um domínio para outro terá o seguinte aspeto:

RewriteEngine On
RewriteRule ^directorio/documento-de-ejemplo.html$ http://www.ejemplo.es/ejemplo.html [L,R=301]
apa­che­conf

A linha 01 do código ativa o módulo mod_rewrite do servidor Apache com o comando RewriteEngine On. A segunda linha começa com RewriteRule, que se encarrega de definir o en­ca­mi­nha­mento do ficheiro e indicar o endereço de destino. O símbolo de in­ter­po­si­ção (^) e o símbolo do dólar marcam o início e o fim do caminho, L designa a última regra do mod_rewrite para pedidos se­me­lhan­tes. R=301 re­di­re­ci­ona com o código de estado HTTP 301.

É ne­ces­sá­rio ter especial cuidado com a con­fi­gu­ra­ção do ficheiro .htaccess ao re­di­re­ci­o­nar um domínio, pois um erro no código altera au­to­ma­ti­ca­mente os ficheiros de con­fi­gu­ra­ção do site e pode causar problemas no seu fun­ci­o­na­mento. Uma vez que as al­te­ra­ções são aplicadas ime­di­a­ta­mente após serem guardadas, é re­co­men­dá­vel rever o código e verificar as al­te­ra­ções antes de as guardar.

Re­di­re­ci­o­na­mento com PHP

O re­di­re­ci­o­na­mento de uma página web não é possível apenas através de ficheiros .htaccess. Também é possível uti­li­zando comandos num script PHP (por exemplo, no ficheiro index.php). O código seguinte ilustra um re­di­re­ci­o­na­mento per­ma­nente para a URL de destino fictícia www.ejemplo.es.

<?php
header(Status: 301 Moved Permanently);
header(Location: http://www.ejemplo.es);
exit;
?>
php

No re­di­re­ci­o­na­mento com PHP, a função header na linha de código 02 define o código de estado – neste caso, o 301 de re­di­re­ci­o­na­mento per­ma­nente. Como, por pre­de­fi­ni­ção, os re­di­re­ci­o­na­men­tos do servidor são tem­po­rá­rios, é ne­ces­sá­rio forçar o re­di­re­ci­o­na­mento através do código de estado 301. A URL de destino – neste caso www.ejemplo.esna linha de comando 03 também é definida pela função header. A função exit na linha de comando 04 encerra o script e impede que códigos pos­te­ri­o­res sejam exe­cu­ta­dos. Para que o re­di­re­ci­o­na­mento por PHP funcione, o bloco de código deve estar lo­ca­li­zado no início, ga­ran­tindo assim que o servidor não exiba qualquer tipo de conteúdo HTML na página de re­di­re­ci­o­na­mento.

Re­di­re­ci­o­na­men­tos baseados no cliente

Caso, devido a problemas técnicos, não seja possível re­di­re­ci­o­nar uma página web a partir do servidor, pode-se recorrer a uma solução baseada no cliente. Para esse efeito, estão dis­po­ní­veis as meta tags HTML refresh e o Ja­vaS­cript cor­res­pon­dente. A des­van­ta­gem do re­di­re­ci­o­na­mento de domínios baseado no cliente é que o servidor não emite qualquer código de estado HTTP para o navegador web ou para o ras­tre­a­dor. Isto significa que não é feita qualquer re­fe­rên­cia explícita ao re­di­re­ci­o­na­mento. Por outro lado, nem todos os agentes de uti­li­za­dor suportam o re­di­re­ci­o­na­mento baseado no cliente, pelo que existe o risco de alguns dos vi­si­tan­tes da página web não serem re­di­re­ci­o­na­dos.

Outra des­van­ta­gem é o efeito gerado na indexação dos motores de busca. Ao re­di­re­ci­o­nar um site a partir do cliente uti­li­zando o código de estado HTTP 301, os motores de busca não de­sin­de­xa­rão au­to­ma­ti­ca­mente o domínio antigo dos seus re­sul­ta­dos, o que significa que o domínio anterior começará a competir no ranking com o domínio de destino. Enquanto os re­di­re­ci­o­na­men­tos baseados no cliente implicam sempre um atraso que terá cer­ta­mente um impacto na taxa de rejeição dos vi­si­tan­tes, os re­di­re­ci­o­na­men­tos a partir do servidor (que per­ma­ne­cem in­vi­sí­veis para o uti­li­za­dor, com a única diferença da alteração do endereço na barra do navegador) revelam-se muito mais con­ve­ni­en­tes.

Re­di­re­ci­o­nar uma página web com a meta tag HTML refresh

O re­di­re­ci­o­na­mento através da me­ta­e­ti­queta HTML é feito uti­li­zando o atributo http-equiv. Assim, para con­fi­gu­rar o re­di­re­ci­o­na­mento, é ne­ces­sá­rio criar um ficheiro HTML simples com a me­ta­e­ti­queta cor­res­pon­dente no cabeçalho do código. Para informar os vi­si­tan­tes do site sobre o re­di­re­ci­o­na­mento, é possível criar uma mensagem de texto no documento HTML (por exemplo, «Mudámos de endereço!»). Será re­di­re­ci­o­nado au­to­ma­ti­ca­mente dentro de alguns segundos. Um re­di­re­ci­o­na­mento simples de domínios através da me­ta­e­ti­queta HTML refresh terá o seguinte aspeto:

<meta http-equiv=refresh content=10; url=http://www.ejemplo.es/>
html

A me­ta­e­ti­queta http-equiv é res­pon­sá­vel por solicitar ao cliente o re­di­re­ci­o­na­mento do domínio. Em seguida, define-se o atributo do conteúdo. No comando anterior, após 10 segundos, o uti­li­za­dor será re­di­re­ci­o­nado para a URL de destino www.ejemplo.es.

Re­di­re­ci­o­na­mento com Ja­vaS­cript

Utilizar Ja­vaS­cript é outro método simples para re­di­re­ci­o­nar um URL a partir do cliente. Tal como o re­di­re­ci­o­na­mento com a me­ta­e­ti­queta refresh, o re­di­re­ci­o­na­mento com Ja­vaS­cript só deve ser utilizado como último recurso, uma vez que, por motivos de segurança, este script não é suportado por todos os na­ve­ga­do­res web. Lembre-se, além disso, de que os re­di­re­ci­o­na­men­tos com Ja­vaS­cript também são um problema para os ras­tre­a­do­res e para os uti­li­za­do­res que tenham com­ple­men­tos NoScript ativados nos seus na­ve­ga­do­res. Um exemplo clássico de re­di­re­ci­o­na­mento através de Ja­vaS­cript terá o seguinte aspeto:

<script> 
window.location.replace('http://www.ejemplo.es); 
</script>
html

A im­por­tân­cia desta sequência de comandos reside prin­ci­pal­mente na linha 02. No exemplo, o objeto window.location é utilizado para se referir ao novo domínio. O comando replace indica ao navegador que deve re­di­re­ci­o­nar o uti­li­za­dor para o domínio entre pa­rên­te­ses www.ejemplo.es.

Ir para o menu principal