Redirect em PHP

De Wiki Locaweb
Ir para: navegação, pesquisa

Redirecionamento de páginas em PHP

Para fazer com que o usuário ao acessar um determinado endereço do seu site seja redirecionado para outro endereço, dentro ou fora do seu site, você deverá utilizar o parametro location: da função header(). Abaixo segue um exemplo de uso básico desta função:


<?php
 #abaixo, criamos uma variavel que terá como conteúdo o endereço para onde haverá o redirecionamento:  
 $redirect = "http://www.locaweb.com.br";
 
 #abaixo, chamamos a função header() com o atributo location: apontando para a variavel $redirect, que por 
 #sua vez aponta para o endereço de onde ocorrerá o redirecionamento
 header("location:$redirect");
 
?>


Da maneira como esta acima, sempre que o usuário acessar a página que contém o código acima, ele será redirecionado automaticamente para http://www.locaweb.com.br.

O redirecionamento não se restringe a endereços absolutos de sites, sendo que você também pode redirecionar para pastas dentro do seu FTP, ou mesmo arquivos que estão na mesma pasta utilizando um caminho relativo a ela.

Para melhor exemplificar isto, vamos criar um script que irá capturar o endereço pelo qual esta acessado, e redirecionar o usuário para outro conforme este endereço de acesso.


<?php
 #atribui para a váriavel $servidor o conteúdo da váriavel de ambiente $_SERVER["SERVER_NAME"], que por sua vez 
 #contém o endereço pelo qual o site foi acessado
 $servidor = &$_SERVER["SERVER_NAME"];
 
switch ($servidor) { #verifica a variavel $servidor

    case "cliente.seudominio.com.br": #se $servidor igual cliente.seudominio.com.br
     unset($servidor);  #apaga a variavel $servidor, para otimizar o uso de memória uma vez que ela não será mais usada
        header("location:http://seudominio.com.br/cliente");  #e faz um redirect para http://seudominio.com.br/cliente
                break;
 
    case "fornecedores.seudominio.com.br":
     unset($servidor);
        header("/fornecedores"); #redireciona para o diretorio fornecedores, dentro da raiz (/) do site
                break; 
 
    case "adm.seudominio.com.br":
     unset($servidor);
        header("location:../adm"); #direciona para a pasta adm, que esta um diretório abaixo (../) do atual
                break;
 
    case "diretoria.seudominio.com.br":
     unset($servidor);
        header("location:diretoria.html"); #direciona para o arquivo diretoria.html dentro do mesmo diretorio do arquivo atual
                break;
 
   default: #caso não seja nenhum dos endereços acima
        header("location:/"); #direciona para a raiz do site
		break;
}
?>


Lembrando que para o script acima funcionar, todas as entradas usadas no script deverão estar criadas no DNS. Caso tenha duvida de como fazer isto, leia este documento.

Veja também