Faça uma pergunta »

Redirecionamento PHP (redirect header)

Agosto 2015

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.ccm.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
Para uma leitura offline, é possível baixar gratuitamente este artigo no formato PDF:
Redirecionamento-php-redirect-header.pdf

Veja também

Na mesma categoria

PHP Redirect to another page (redirect header)
Por deri58 em 25 de agosto de 2010
PHP - Redireccionar a otra página web
Por Carlos-vialfa em 11 de julho de 2008
Redirection PHP (redirect header)
Por Thom@s em 4 de novembro de 2004
Reindirizzamento PHP (redirect header)
Por apfel9 em 4 de fevereiro de 2015
Artigo original publicado por Thom@s. Tradução feita por pintuda. - última modificação por ninha25
Este documento, intitulado « Redirecionamento PHP (redirect header) »a partir de CCM (br.ccm.net) está disponibilizado sob a licença Creative Commons. Você pode copiar, modificar cópias desta página, nas condições estipuladas pela licença, como esta nota aparece claramente.