Redirecionamento PHP (redirect header)

Às vezes, um webmaster pode perceber que um arquivo está com o nome errado ou que a organização dos diretórios deve ser alterada. Embora seja relativamente simples alterar links locais, mudar aqueles direcionados para outros sites pode ser mais complexo. Por outro lado, quando as páginas mudam de localização, os motores de busca podem exibir o conhecido Erro 404 ou, pior ainda, desindexam a página. Por sorte, existe uma solução simples para esse problema: o redireccionamiento de link, que permite que um site redirija um conteúdo para outro domínio ou URL, mantendo a lógica de navegação da página mesmo se todos os arquivos mudem 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 visitante para outra página utilizando um script PHP, usaremos o elemento header(). Insira o endereço da página para onde você quer fazer o redirecionamento. Esse endereço pode ser absoluto ou ter configurações do tipo minhapagina.com?param1=val1¶m2=val2.

É muito importante levar em conta que o cabeçalho de localização deve ser indicado antes de exibir qualquer informação na tela (código HTML, espaços em branco). O código PHP situado depois da função header() será interpretado pelo servidor mesmo se o visitante já estiver no endereço especificado no direcionamento, o que significa que, na maioria dos casos, você vai querer colocar a função exit() para não gerar trabalho ao servidor sem necessidade.

Rota relativa ou absoluta

Ao realizar a indicação, você deve prestar atenção se a rota que será mencionada é do tipo absoluta ou relativa. Se empregamos o elemento header(), lembre que, para alguns navegadores, o URL que se deseja redirecionar não pode ser relativo.

A rota absoluta contém o nome completo do domínio (incluindo o protocolo HTTP) enquanto a rota relativa é formada a partir da anterior, mas prescinde de certas partes do recurso linkado. A rota relativa é útil para economizar tempo, mas exige informações adicionais para localizar o recurso desejado.

Vejamos a diferença entre elas com dois exemplos:

Redirecionamentos temporários/definitivos

Os três redirecionamentos mais utilizados se dividem em temporários e permanentes. São eles 301, 302 y 307. O redirecionamento 301 é permanente, o que significa que a página foi movida de forma irreversível para outra página. O conteúdo eliminado é substituído por um novo. A seguir, mostramos como fazer esse redirecionamento com PHP:

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

Os redirecionamentos 302 e 307 são temporários. Nesse caso, o URL de origem segue existindo, mas deve ser transferido para outro local de forma temporária, com a intenção de recuperá-lo em outro momento.

A diferença entre eles é que o 307 indica que o conteúdo desapareceu temporariamente. Vejamos o código PHP para redirecionamento temporário:


<?php
header("HTTP/1.1 302 Moved Temporarily");;
header("Location: endereço_da_nova_página_temporária);
?>

Foto: © kaspri - 123RF.com

Nosso conteúdo é produzido em colaboração com especialistas em tecnologia da informação sob o comando de Jean-François Pillou, fundador do CCM.net. CCM é um site sobre tecnologia líder em nível internacional e está disponível em 11 idiomas.
Veja também
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.

Assine nossa newsletter!

Assine nossa newsletter!
Junte-se à comunidade