Qualquer webmaster se dá conta, um dia, que um dos seus arquivos foi mal intitulado ou que a árvore dos arquivos deve ser modificada. No entanto, se trocar os links do seu site é relativamente fácil, em outros (sites externos) é muito mais difícil. Além disso, quando trocamos as páginas de lugar, os motores de busca podem enviar os usuários para lugar nenhum, ou pior, reinicializar completamente a indexação da página.
Felizmente, existe uma solução bem simples : redirecionamentos que ajudam a manter a coerência da navegação (e da indexação) de um site, mesmo se todos os arquivos mudaram de lugar.
IMPORTANTE: Cabeçalhos HTTP
Os redirecionamentos são cabeçalhos HTTP. Ora, segundo o protocolo HTTP, os cabeçalhos HTTP devem ser enviados antes de qualquer outro tipo de conteúdo, o que significa que nenhum caractere deve ser enviado antes da chamada da função header, nem mesmo um espaço !
Em outras palavras,
a função header() deve, absolutamente, ser utilizada antes de qualquer código HTML.
Para mais informações, leia este artigo :
O erro "headers already sent by"
Redirecionamento simples
Para redirecionar o navegador para outra página (particularmente útil em um loop condicional), basta utilizar o seguinte código :
<?php
header('Localização: mapeamento.php');
?>
Onde
mapeamento.php representa o endereço da página para onde você quer redirecionar. Este endereço pode ser absoluto e também pode ter configurações do tipo
mapeamento.php?param1=val1¶m2=val2).
Caminho relativo / absoluto
Idealmente, escolha um caminho absoluto a partir da raíz do servidor (DOCUMENT_ROOT), da seguinte maneira :
<?php
header('Localização: /diretório/mapeamento.php');
?>
Se, por acaso, a página procurada estiver em um outro servidor, digite o URL completo, da seguinte forma :
<?php
header('Localização: http://www.kioskea.net/forum/');
?>
Redirecionamentos temporários / definitivos
Por padrão, o tipo de redirecionamento apresentado acima é do tipo temporário. O que significa, por exemplo, que os motores de busca como o Google não o levam em conta para a indexação.
Assim, se você quiser mostrar aos motores de busca que a página A se encontra agora na localização B, é preciso utilizar o seguinte código, no início do arquivo PHP, correspondente à página A :
<?
header('Status: 301 Moved Permanently', false, 301);
header('Locatização: endereço_da_página_B);
?>
Exemplo
A
página possui o seguinte código :
<?
header( "Status: 301 Moved Permanently", false, 301);
header("Locatização: /pc/impressora.php3");
exit();
?>
Assim, quando você clicar no link acima, você será redirecionado, automaticamente, para a
página.
Este é um redirecionamento permanente (Status: 301 Moved Permanently). Assim, ao digitar o primeiro URL no Google, é o segundo endereço que aparecerá como resultado, provando que o redirecionamento foi levado em conta o:
redirecionamento
Interpretação do código PHP
O código PHP que aparece após a chamada da função header() será interpretado pelo servidor, mesmo se o navegador já estiver no endereço especificado no redirecionamento; o que significa que, na maioria dos casos, você deve seguir a função header() da função exit() para não deixar o servidor trabalhar à toa :
<?
header('Status: 301 Moved Permanently', false, 301);
header('Localização: endereço');
exit();
?>
Saiba mais
Página da documentação oficial do PHP na função
header():
Tradução feita por Lucia Maurity y Nouira
A ver igualmente
Comunidade de assistência e de conselho.
Artigo original publicado por
Thom@s. Tradução feita por
pintuda. -
última modificação por ninha25