PHP - Cómo direccionar a otra página web

Haz una pregunta
Un webmaster puede darse cuenta un día que uno de sus archivos tiene un nombre equivocado o que el árbol de directorios de los archivos debe ser modificado. Sin embargo, aunque es relativamente fácil cambiar los enlaces al interior de un sitio web, es mucho más difícil cambiar los enlaces que se encuentran en sitios externos. Por otra parte, cuando se cambian de ubicación las páginas, los motores de búsqueda pueden enviar a los usuarios al vacío o, peor aún, volver a cero todo el posicionamiento de la página. Afortunadamente, existe una solución simple: el direccionamiento, que permite mantener la lógica de la navegación (y del posicionamiento) de un sitio web, incluso si todos los archivos han cambiado de lugar.


Direccionamiento simple

Para direccionar al visitante hacia otra página (muy útil en un bucle condicional), solo tienes que utilizar el código siguiente:


<?php
header('Location: mipagina.php');
?>

Donde mipagina representa la dirección de la página hacia la que quieres direccionar. Esta dirección puede ser absoluta y puede tener parámetros de la forma mipagina.php?param1=val1¶m2=val2).

Ruta relativa/absoluta

Idealmente, prefiere una ruta absoluta desde la raíz del servidor (DOCUMENT_ROOT), de la forma siguiente:



<?php
header('Location: /carpeta/mipagina.php');
?>

Si la página de destino estuviera en otro servidor, entonces indicar la URL completa, de la forma siguiente:


<?php
header('Location: http://www.ccm.net/forum/');
?>

Encabezados HTTP

Los direccionamientos son encabezados HTTP. Pero, según el protocolo HTTP, los encabezados HTTP deben ser enviados antes que cualquier otro tipo de contenido, lo que significa que ningún carácter debe ser enviado antes del llamado de la función header, ni siquiera un espacio. En otras palabras, la función header() debe ser utilizada antes de cualquier código HTML.

Direccionamientos temporales/definitivos

Por defecto, el tipo de direccionamiento presentado líneas arriba es un direccionamiento temporal. Lo que significa que los motores de búsqueda como Google no la toman en cuenta para el posicionamiento. Por ello, si deseas indicar a los motores de búsqueda que la página A está ahora en la ubicación B, debes utilizar el siguiente código al inicio del archivo PHP correspondiente a la página A:



<?
header('Status: 301 Moved Permanently', false, 301);
header('Location: direccion_de_la_pagina_B);
?>

Interpretación del código PHP

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:


<?
header('Status: 301 Moved Permanently', false, 301);
header('Location: direccion);
exit();
?>

Foto: © PHP.