Cómo hacer una redirección en PHP

Tutorial sobre cómo hacer una redirección en PHP paso a paso

Tag PHP Redireccionamiento

En este tutorial voy a explicar cómo realizar correctamente una redirección en php. Para este cometido voy a mostrarte cómo hacer una redirección básica, varios ejemplos de redirecciones y además notas importantes que podrían arruinar tu redirección web.

Para ser exactos, los conceptos que voy a tratar son:

  1. ¿Cómo realizar una redirección básica en PHP?
  2. Cómo realizar una redirección según la situación.
  3. Notas y detalles a tener en cuenta para evitar errores al manipular las cabeceras.
  4. Creación de un helper para reutilizar en proyectos y evitar olvidar una configuración completa.

 

La forma más sencilla de redireccionar en PHP

La forma de realizar redirecciones en PHP es mediante la función header(). Veamos como realizar una redirección sencilla y rápida:

<?php
$nuevaURL = 'https://www.srcodigofuente.es';
header('Location: '. $nuevaURL);

Cómo puedes ver su uso es extremadamente sencillo, pero hay tener en cuenta un detalle importante cuando manipulamos cabeceras en php , este comando debes ejecutarlo antes de que ningún texto sea imprimido por pantalla, ya sea, por ejemplo, mediante un comando echo o con el uso normal de HTML.

Cómo redireccionar con un código de redirección

Cómo bien sabrás los códigos de estado en las cabeceras son un mecanismo importante a la hora de realizar comunicaciones entre clientes y servidores. Gracias a estos códigos las preguntas y respuestas que ocurren en en las conexiones tcp/ip cobran sentido. Por lo tanto, como estamos modificando las cabeceras de respuesta de nuestro servidor, deberíamos utilizar un código adecuado para cada situación.

En nuestro caso, como se trata de una redirección, deberemos utilizar un código del rango 300. En concreto, para nuestra web deberiamos utilizar uno de los principales códigos de redirección:

  • Código de redirección 301, movido permanentemente. Cuando una página de nuestro sitio ya no va a volver a estar disponible deberemos realizar la redirección y lanzar este código HTTP. De esta forma estamos avisando al visitante que la primera página visitada ya no existirá y que la nueva es la que ahora la sustituye.
  • Código de redirección 302, movido temporalmente. Este código significará que la url requerida en un principio no está disponible por un breve periodo de tiempo.

Sí te apañas con el inglés y tienes más interés sobre los códigos de cabecera te recomiendo visitar la documentación de la w3c: códigos de estado HTTP/1.1.

Veamos un ejemplo con ambos códigos de estado HTTP.

Ejemplo con redirección 301

<?php
header("HTTP/1.1 301 Moved Permanently"); 
$nuevaURL = 'https://www.srcodigofuente.es';
header('Location: '. $nuevaURL);
?>

Ejemplo con redirección 302

Por defecto PHP mediante el comando header realiza una redirección temporal, por lo tanto, para crear una redirección con código de estado 302, tan solo debemos no indicar ningún código HTTP.

$nuevaURL = 'https://www.srcodigofuente.es';
header('Location: '. $nuevaURL);

Helper para realizar redirecciones de forma sencilla

Ya que redireccionar a los visitantes de nuestras webs es una tarea muy común y a la cual se recurre de forma constante, te recomiendo crear una función reutilizable e incluirla en un fichero de helpers con un cometido similar.

Mi propuesta es la siguiente, y es la que utilizo a menudo en mis proyectos:

<?php
function redirect($uri = '/', $codigo = 'default') {
		switch( $codigo ){
			case 301:
				header( 'HTTP/1.1 301 Moved Permanently' );
				header('Location: '.WEB.'/'.$uri);
			default:
				header('Location: '.WEB.'/'.$uri);	
		}
		die();
}
?>

Para utilizar esta función deberías haber creado previamente una constante con la URL del sitio:

<?php
define( 'WEB', 'https://www.srcodigofuente.es' );
?>

Ahora, para llamar a la función y lanzar una redirección puedes hacerlo mediante:

<?php
redirect( '/contacto', 301 );
//o para una redirección 302
redirect('/nota-legal');
?>

Notas importantes para hacer una correcta redirección

Para terminar me gustaría dejarte todos los puntos claves para crear redirecciones de forma correcta y que no te produzcan errores:

  1. La llamada a la función header debes hacerla antes de imprimir ningún contenido por pantalla.
  2. Piensa que código de estado necesitas para cada redirección, aunque a priori no parezca de mucha importancia, si estás creando webs que requieren de un buen SEO, podrías estar creando errores que GOOGLE u otra SERP penalizaría.
  3. No abuses de las redirecciones, ya que es una práctica castigada por los buscadores si se usa con frecuencia. Además, reduce el rendimiento de tu sitio.
  4. Realiza una llamada de parada con la función die siempre después de una redirección, ya que ciertos botscrawlers podrían ignorar la redirección y acceder a contenido a priori protegido.
  5. Una redirección PHP siempre es preferible a una redirección de javascript o HTML.

Sobre el autor

Javier Gómez Redactor en Srcodigofuente.es

Javier Gómez

Ingeniero técnico en informática de gestión. Desarrollador web freelance y profesor de desarrollo web a partes iguales. Testarudo autodidacta, creativo, perfeccionista y alma libre.

Cargando comentarios

Utilizamos "cookies" para información estadística. Si continúas navegando aceptas su uso.