Cómo redireccionar una página en PHP

Cómo redireccionar una página en PHP

El redireccionamiento de enlace permite que una página web se dirija a un dominio o a una URL concreta y, así, mantener la lógica de la navegación (y del posicionamiento) de un sitio web, incluso si todos los archivos han cambiado de lugar.

¿Cuál es el redireccionamiento simple?

Para redireccionar al visitante a otra página utilizando un script PHP, utilizaremos el elemento header():

<?php
header('Location: [http://www.mipagina.com/%27) http://www.mipagina.com/')];
exit;
?>

Donde http://www.mipagina.com/ es una dirección absoluta y representa la dirección de la página hacia la que quieres redireccionar.

Es muy importante tener en cuenta que el encabezado de ubicación debe de ser llamado antes de mostrar cualquier información por pantalla (código HTML, espacios en blanco…).

El código PHP situado después del llamado a la función header() será interpretado por el servidor, incluso si el visitante ya ha partido a la dirección especificada en el direccionamiento, lo que significa que en la mayoría de casos tendrás interés en poner la función exit() después de la función header() para no hacer trabajar al servidor inútilmente.

¿Cuál es la ruta relativa/absoluta?

A la hora de hacer la llamada se debe prestar atención a si la ruta que se va a mencionar va a ser absoluta o relativa.

Si empleamos el elemento header(), hay que tener en cuenta que para algunos navegadores la URL que se desea redireccionar no puede ser relativa, teniendo esta que ser absoluta.

La ruta absoluta es aquella que contiene el nombre completo del dominio (incluyendo el protocolo http), mientras que la relativa está formada a partir de la anterior, pero prescindiendo de ciertas partes del recurso enlazado. Estas últimas son útiles para ahorrar tiempo, pero se requiere de información adicional para localizar el recurso deseado.

Veamos las diferencias con dos ejemplos:

¿Qué redirecciones temporales/permanentes se pueden hacer?

Las tres redirecciones más utilizadas se pueden diferenciar en temporales y permanentes. Estas son: 301, 302 y 307.

La redirección 301 es <bold>permanente, lo cual quiere decir que la página ha sido movida de manera irreversible a otra página. El contenido eliminado es sustituido por el nuevo.

A continuación mostramos cómo realizar esta redirección con PHP:

<?php
header("HTTP/1.1 301 Moved Permanently");
header("Location: [http://www.mipaginanueva.com%22) http://www.mipaginanueva.com")];
?>

Las redirecciones 302 y 307 son temporales. En este caso, la URL de origen sigue existiendo pero se debe trasladar a otra de manera temporal, con la intención de recuperarla más adelante.

La diferencia entre ambas es que en la 307, a diferencia de la 302, se indica que el contenido ha desaparecido temporalmente, se trata de una redirección identificada.

Veamos el código PHP de la redirección temporal:

<?php
header("HTTP/1.1 302 Moved Temporarily");;
header("Location: [http://www.mipaginanuevatemporal.com%22) http://www.mipaginanuevatemporal.com")];
?>

Webmaster