Haz una pregunta »

PHP - Redireccionar a otra página web

Mayo 2015

Cualquier webmaster puede decidir un día que uno de sus archivos tiene un nombre que no le conviene o que el árbol de directorios de los archivos debe ser modificado. Sin embargo, si es relativamente fácil cambiar los enlaces al interior de un sitio web, es mucho más difícil cambiar los enlaces externos hacia otros sitios web. Por otra parte, cuando cambiamos de ubicación las páginas, los motores de búsqueda pueden enviar a los usuarios al vacio o, peor aun, reinicializar todo el posicionamiento de la página.

Felizmente, existe una solución simple: la redirección permite mantener la lógica de la navegación (y del posicionamiento) de un sitio web, incluso si todos los archivos ha cambiado de lugar.



Redirección simple


Para redireccionar al visitante hacia otra página (especialmente útil en un bucle condicional), sólo hay que utilizar el código siguiente:
<?php
header('Location: mipagina.php');
?>

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

Ruta relativa/absoluta


Teóricamente, es mejor preferir una ruta absoluta desde la raíz del servidor (DOCUMENT_ROOT), de la forma siguiente:
<?php
header('Location: /repertoire/mapage.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.commentcamarche.net/forum/');
?>


Encabezados HTTP


Las redirecciones 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() necesariamente debe ser utilizada antes de cualquier código HTML.

Para mayor información, leer este artículo: error “Headers already sent by.....”

Redirecciones temporales/definitivas


Por defecto, el tipo de redirección presentada líneas arriba es una redirección temporal. Lo que significa que los motores de búsqueda como Google no la toman en cuenta para el posicionamiento.

Por ello, si deseamos indicar a los motores de búsqueda que la página A está ahora en la ubicación B, debemos 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);
?>

Ejemplo


La página http://www.commentcamarche.net/pc/imprim.php3 tiene el código siguiente:
<?		
		header( "Status: 301 Moved Permanently", false, 301);
		header("Location: /pc/imprimante.php3");
		exit();  
?>

De este modo, cuando se haga clic en el enlace de arriba, seremos automáticamente trasferido a la página
http://www.commentcamarche.net/pc/imprimante.php3

Esta es una redirección permanente (Status: 301 Moved Permanently). Por ello, si ingresamos la primera URL en Google, éste dará como resultado la dirección de la segunda, esto prueba que ha tomado en cuenta la redirección:
http://www.google.fr/search?hl=fr&q=http%3A%2F%2Fwww.commentcamarche.net%2Fpc%2Fimprim.php3&btnG=Recherche+Google&meta=

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 la redirección, lo que significa que en la mayoría de casos tendremos interés en poner la función exit() después de la función header() para no hacer trabajar el servidor por gusto:
<?
header('Status: 301 Moved Permanently', false, 301);
header('Location: direccion);
exit();
?>

Ver también


Consulta este artículo sin tener que estar conectado, descárgalo gratis aquí en formato PDF:
Php-redireccionar-a-otra-pagina-web.pdf

Consulta también

En la misma categoría

PHP Redirect to another page (redirect header)
Por deri58 el 25 de agosto de 2010
Redirection PHP (redirect header)
Por Thom@s el 4 de noviembre de 2004
Reindirizzamento PHP (redirect header)
Por apfel9 el 4 de febrero de 2015
Redirecionamento PHP (redirect header)
Por pintuda el 8 de abril de 2009
El artículo original fue escrito por Thom@s. Traducido por Carlos-vialfa.
El documento « PHP - Redireccionar a otra página web » de Kioskea (es.kioskea.net) se encuentra disponible bajo una licencia Creative Commons. Puedes copiarlo o modificarlo bajo las condiciones señaladas por esta licencia. Deberás hacerla siempre visible y dar crédito a Kioskea.