Scroll to top

Spanish (Español) translation by Ana Paulina Figueroa (you can also view the original English article)

La redirección te permite remitir al navegador cliente a un URL diferente. Puedes usar esto cuando estés cambiando de dominios, al cambiar la estructura de tu sitio o al cambiar a HTTPS.

En este artículo, te mostraré cómo redirigir a otra página con PHP. Explicaré exactamente cómo funcionan las redirecciones de PHP y te mostraré qué ocurre en segundo plano.

Aprende PHP con un curso gratuito en línea

Si quieres aprender PHP, ¡echa un vistazo a nuestro curso gratuito en línea sobre los fundamentos de PHP!

¿Cómo funciona la redirección básica?

Antes de que nos adentremos en los detalles de la redirección PHP, vamos a entender rápidamente cómo funciona con exactitud la redirección HTTP. Echa un vistazo a la siguiente captura de pantalla.

How Redirection WorksHow Redirection WorksHow Redirection Works

Comprendamos lo que está sucediendo en la captura de pantalla anterior:

  • El navegador cliente solicita una página específica del servidor. En el ejemplo anterior, el cliente ha solicitado el contenido del archivo index.php.
  • El servidor recibe la solicitud para obtener el archivo index.php y desea informar al cliente que ya no está disponible o que se ha movido a otro lugar, y que este debe buscar un archivo nuevo en su lugar: new_index.php. El servidor envía el encabezado Location con un URL nuevo junto con el código HTTP 301 o 302. Estos son los códigos HTTP para la redirección.
  • Cuando un navegador cliente se encuentra con el código 301 o 302, este sabe que tiene que iniciar otra solicitud a un nuevo URL para recuperar el contenido. Este inicia una solicitud para recuperar el archivo new_index.php en el ejemplo anterior.
  • Finalmente, un servidor envía el contenido del nuevo URL.

Así es como funciona una redirección HTTP básica. En la siguiente sección, discutiremos cómo funciona la redirección PHP.

¿Cómo funciona la redirección en PHP?

En PHP, cuando quieres redirigir a un usuario de una página a otra página, necesitas usar la función header(). La función header te permite enviar el encabezado Location HTTP sin procesar que realiza la redirección real, como discutimos en la sección anterior.

Cómo usar la función header

Revisemos la sintaxis de la función header().

1
header( $header, $replace, $http_response_code )
  • $header: Esta es la cadena del encabezado HTTP que quieres usar. En nuestro caso, usaremos el encabezado Location para la redirección.
  • $replace: Es un parámetro opcional que indica si el encabezado debe sustituir a un encabezado similar anterior.
  • $http_response_code: Te permite enviar un código de respuesta específico.

Ahora, echemos un vistazo al siguiente ejemplo para comprender cómo funciona en conjunto.

1
<?php
2
// index.php

3
header("Location: https://www.yoursite.com/new_index.php");
4
exit();
5
?>

Al ejecutar el script anterior, este redirigirá al navegador cliente a http://www.yoursite.com/new_index.php. En segundo plano, este envía un encabezado Location HTTP sin procesar junto con el código de estado 302. El código de estado 302 se usa para una redirección temporal, pero si quieres una redirección permanente, puedes enviar el código 301 en el tercer argumento como se muestra en el siguiente fragmento de código.

1
<?php
2
// index.php

3
header("Location: http://www.yoursite.com/new_index.php", TRUE, 301);
4
exit();
5
?>

La redirección permanente 301 te permite informar a los bots de búsqueda que la página ya no está disponible, y que esta puede reemplazarse con una nueva página.

¿Por qué deberías usar la función die() o la función exit() después de la redirección con header?

Los usuarios de atenta mirada habrán notado que he usado la función exit() en el ejemplo anterior. De hecho, es obligatorio que uses ya sea la función exit() o la función die() inmediatamente después de la redirección con header para detener la ejecución del script y evitar resultados no deseados.

Por lo tanto, el uso de una de estas funciones después de la redirección siempre es una práctica recomendada.

El famoso error: los encabezados ya han sido enviados

Si eres un programador experimentado en PHP, tengo la certeza de que te has encontrado con este famoso error de PHP en algún momento durante tu desarrollo cotidiano con PHP. Aunque, para los principiantes, la situación es realmente molesta cuando se encuentran con este error, ya que es muy difícil de depurar y solucionar. En la mayoría de los casos ni siquiera tienen idea de que es causado por la redirección con header.

La regla general es que, al usar la función header() en tu script, debes asegurarte de no enviar ninguna salida antes de ella. De lo contrario PHP se quejará con el error que indica que los encabezados ya han sido enviados, incluso si has enviado un solo espacio en blanco antes de usar la función header.

Conclusión

En este artículo, discutimos una de las características importantes de la programación en PHP: la redirección. Primero revisamos los conceptos básicos de la redirección HTTP y luego demostré cómo funciona en PHP.

Los mejores scripts de PHP en CodeCanyon

Explora miles de los mejores y más útiles scripts de PHP alguna vez creados en CodeCanyon. Con un pago único de bajo costo, puedes comprar estos temas de WordPress de alta calidad y mejorar la experiencia en tu sitio web para ti y para tus visitantes.

Estos son algunos de los scripts de PHP mejor vendidos y más prometedores disponibles en CodeCanyon para 2020.