Redirecionamento PHP (redirect header)

Setembro 2017

Qualquer webmaster pode decidir, um dia, que um dos seus arquivos foi mal intitulado ou que a árvore de arquivos deve ser modificada. No entanto, se trocar os links do seu site é relativamente fácil, em sites externos é muito mais difícil. Além disso, quando trocamos páginas de lugar, os motores de busca podem direcionar os usuários para lugar nenhum ou reinicializar inteiramente a indexação da página. Felizmente, há uma solução simples. O redirecionamento permite manter a lógica de navegação e indexação de um site mesmo se todos os arquivos mudarem de lugar.


Cabeçalhos HTTP

Os redirecionamentos são cabeçalhos HTTP. 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 ser utilizada antes de qualquer código HTML.

Redirecionamento simples

Para redirecionar o navegador para outra página (particularmente útil em um loop condicional) basta utilizar o seguinte código:


<?php    
header('Location: minhapágina.php');
?>

Onde minhapágina.php representa o endereço da página para onde você quer redirecionar. Este endereço pode ser absoluto e pode ter configurações do tipo minhapágina.php?param1=val1¶m2=val2.

Rota relativa/absoluta

Teoricamente, é melhor escolher uma rota absoluta a partir da raiz do servidor (DOCUMENT_ROOT), da seguinte maneira:


<?php    
header('Location: /diretório/minhapágina.php');
?>

Se, por acaso, a página de destino estiver em um outro servidor, digite o URL completo, da seguinte forma:

<?php    
header('Location: http://www.br.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 quisermos indicar aos motores de busca que a página A se encontra agora na localização B, devemos utilizar o seguinte código, no início do arquivo PHP, correspondente à página A:

<?    
header('Status: 301 Moved Permanently', false, 301);
header('Location: endereço_da_página_B);
?>

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();
?>

Foto: © PHP.

Veja também

Artigo original publicado por deri58. Tradução feita por pintuda. Última modificação: 12 de setembro de 2017 às 13:06 por pintuda.
Este documento, intitulado 'Redirecionamento PHP (redirect header)', está disponível sob a licença Creative Commons. Você pode copiar e/ou modificar o conteúdo desta página com base nas condições estipuladas pela licença. Não se esqueça de creditar o CCM (br.ccm.net) ao utilizar este artigo.