Cómo redireccionar a un visitante usando PHP

Una necesidad muy común en el desarrollo web es la de redireccionar a un visitante hacia algún otro sitio.

Esto sucede cuando el recurso buscado no se encuentra en la URL exacta que se ha solicitado pero se sabe cuál es la correcta.

Para qué sirve una redirección

Las redirecciones se utilizan fundamentalmente por estos motivos:

  1. Para unificar URLs (Por ejemplo para que http://misitio.com y http://misitio.com/ muestren el mismo conenido y los buscadores no las interpreten como contenido duplicado)
  2. Para no perder el posicionamiento logrado cuando cambia el contenido
  3. Para evitar que se realicen múltiples veces procesos que deberían realizarse una única vez.

Cómo funcionan las redirecciones

Cuando un usuario visita un sitio web lo que sucede por detrás es que su navegador se conecta a un servidor y le solicita un recurso (Todo esto sucede al resolver la URL).

El servidor a su vez responde con el contenido buscado en el caso de que disponga de él o bien con algún código para indicar lo que el cliente debe hacer a continuación.

Las reglas que definen esta comunicación forman parte del protocolo HTTP.

Este protocolo establece que, antes del contenido propiamente dicho (El HTML por ejemplo), el servidor envíe al cliente una serie de encabezados.

Entre estos encabezados se encuentra el código de respuesta.

Cuando todo sale bien se envía un código 200, si el recurso no se encuentra en el servidor el código que se envía es el 404, etc…

HTTP define un código especial (En realidad una familia de códigos) para indicarle al cliente que el recurso buscado se encuentra en algún otro lado: 30x (301, 302, etc…)

Por ejemplo, si ingresaras al sitio http://academy.leewayweb.com y vieras la consola de desarrollo de tu navegador verías algo como:

El código de estado es 301 y otro encabezado que se puedes ver es Location: https://academy.leewayweb.com.

Esto significa que el servidor está indicando al cliente que, para obtener el contenido buscado, deberá realizar una nueva petición a dicha URL.

Cómo generar una redirección usando PHP

Lo que queda por decir entonces es cómo podemos modificar el código de estado 200 por 301 en nuestros scripts (y cómo podemos indicar el destino de la redirección).

Para ello contamos con una función llamada header.

Esta función permite, justamente, manipular los encabezados que el servidor enviará al cliente.

En el caso de una redirección es posible escribir simplemente el encabezado Location y la función hará el resto:

<?php

header("Location: destino.php");

Si queremos ser más específicos podemos combinar esta con una llamada a http_response_code para determinar el código de estado.

Un par de detalles a tener en cuenta:

  1. La función header tiene que ser invocada antes de enviar contenido al cliente
  2. Si bien lo más probable es que nuestro objetivo sea que el script finalice luego de enviar el encabezado 30x, esto no es así para otros códigos, con lo cual, debemos ser explícitos en nuestra intención. Esto significa que debemos incluir una sentencia die luego del envío de encabezados si esta es nuestra intención.

mchojrin

¿Te quedó alguna duda? Publica aca tu pregunta

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

A %d blogueros les gusta esto: