Redireccionar páginas con Location en las cabeceras (header) mediante Php

En este método, como en todas las opciones mostradas (salvo la notificación a Google) también es necesario tener acceso al servidor antiguo y mantenerlo al menos durante una temporada, pues es en los viejos archivos donde colocaremos el código mágico que realiza la redirección. Una vez que tanto buscadores como usuarios se acostumbren a visitarnos en las nuevas urls, podremos abandonar el viejo hosting (si es que la redirección es hacia un hosting distinto) o incluso eliminar estos viejos archivos sobre los que vamos a trabajar ahora.

Aunque lo veremos más detalladamente, el código necesario básicamente es este:

  header (" Location: http://www.web-de-destino.com ");

Ese fragmento de código Php, es ejecutado al visitar la web. En ese momento Php le dice a Apache que avise al navegador del usuario de que esa web a la que se intenta acceder tiene aplicado una redirección temporal, más conocida como redirección 301 y, automáticamente trate de mandar al navegador a la web alternativa apuntada en esa línea de código. Sencillo, verdad?

Al redireccionar no necesitas cargar nada más de código, no?

Una vez que decides redireccionar al usuario a otra web distinta, seguramente ya no te interese que el navegador siga cargando el resto de código existente en esa antigua página. Si es así, puedes colocar el comando "exit" de Php para evitar que se siga cargando nada más. Ten en cuenta que el Header no impide seguir cargando todo el resto del código de ese archivo, de modo que si no interesa cargarlo, o lo eliminas del archivo o colocas esta sentencia Exit para parar esa carga. Quedaría algo así:

<?php
  header ("Location:http://www.web-de-destino.com");
  exit();
?>

Requisitos para redireccionar webs con Location de Php

Los requisitos para poder realizar una redirección mediante el comando Location de Php son los siguientes:

  • Necesitamos editar los viejos archivos
  • Se debe poder ejecutar código Php en esos viejos archivos
  • La url de destino hay que indicarla como ruta completa, con http://......
  • Antes de esas líneas de código, no debe ejecutarse ningún otro código que envíe algo que pueda ser mostrado en el navegador, tal como echo, print, title, etc.

Y no olvides que el Header Location se usa para redireccionar páginas cuyas URL ya no existen o van a ser eliminadas. Para cualquier otra cosa no debería usarse. Seguramente haya soluciones mejores cuando no se trata de una redirección pura y dura.

Error común al redireccionar páginas con Location de Php

Es tan habitual este error que seguro que alguna vez te lo encuentras en pantalla. Sucede que al tratar con este tipo de redirección te aparece el siguiente error en la pantalla al intentar visitar esa web:

“Warning: Cannot modify header information”

Es posible incluso que no hayas estado tocando nada del código de la redirección, de la línea del header, pero el error es claro. Has escrito algo entre el código que envia algo para ser mostrado en pantalla ANTES del envío de la cabecera. Puede ser una línea o espacio en blanco antes de la línea del Header, puede que hayas dejado una linea en blanco como primera línea de código en ese archivo de página web, o que hayas colocado un "include" o qué se yo, pero seguro seguro que algo hay entre el inicio del archivo y la línea del header que no estaba antes y que está ocasionando ese error. Fijate bien para corregirlo.

Redireccionar webs con cabeceras php y retardo de algunos segundos

Al parecer las cabeceras Header no admiten ningún tipo de retardo de tiempo para esperar antes de ejecutar la redirección. No onstante suelen funcionar, si lo necesitas, estos dos modos:

Añadiendo un comando Sleep que "duerme" el proceso la cantidad de segundos indicados entre los paréntesios:

<?php
  sleep(10);
  header("Location:http://www.web-de-destino.com");
  exit();
?>

Con un apaño similar al envio de la metatag Refresh que usabamos en el método de Html:

<?php
  header ("Refresh:10; url=http://www.web-de-destino.com");
  exit();
?>