PHP

Cómo redireccionar usando PHP (de forma segura)

Redireccionar usando PHP es increíblemente útil, pero también puede ser peligrosa si no se implementa correctamente. Usar esta función puede ser complicado, por eso en esta guía aprenderás a redireccionar usando PHP sin generar nuevos problemas a largo plazo.

El método básico para un redireccionamiento PHP

Generalmente, las guías te dirán que para redireccionar PHP puedes emplear la función «header ()» en la parte superior de tus páginas. Para hacer esto, hay que utilizar la función de actualizar URL, de esta manera:

header('Location: '.$nuevaURL.php);

Antes de enviar cualquier código a los navegadores de los usuarios, hay que colocar esta función en el encabezado, o sea, que tiene que estar en la parte superior, antes de la declaración <!DOCTYPE>. Debe ir también antes que cualquier código PHP o Java para que los usuarios sean enviados a la nueva URL.

Si bien puede parecer sencillo, cuando se trata de la función «header ()», la simplicidad del código puede llevar a los desarrolladores a una falsa sensación de seguridad. Así que veamos cómo hacerlo correctamente.

Die () y Exit ()

Lo primero, es que debes utilizar el modificador «die ()» o «exit ()» cada vez que hagas una redirección. En resumen, el problema es que los robots y los rastreadores pueden ignorar los encabezados, por lo que la página desde la que pensabas que estabas redirigiendo es totalmente accesible para ellos. En otras palabras, emplear un redireccionamiento de encabezado para proteger una página en particular, no te ofrece ninguna protección.

Por lo tanto, lo que debes hacer es cerrar la redirección si esta es ignorada. La forma de hacerlo es agregar «die ()» o «exit ()» después de tu redirección:

header("Location: .$nuevaURL.php");
die();

URLs absolutas y relativas

Veamos que son las URL absolutas y las relativas en los redireccionamientos. Por ejemplo RFC 7231 te permite utilizar ambas, pero hay que ser muy cuidadosos cuando usamos los redireccionamientos relativos, porque a veces, los creadores de sitios web clasifican el nombre de las páginas PHP. Lo que significa que si estás trabajando en tu PHP con un creador de sitios, puedes tener problemas con tus redireccionamientos.

Desafortunadamente, no hay una forma existente de evitar este problema, excepto tener una visión general cuidadosa de hacia dónde apuntan tus redirecciones.

Códigos de estado

Otro problema común al redireccionar usando PHP estándar es cuando el operador de «ubicación» de PHP nos entrega un código de error HTTP 302. Esto es porque muchos de los navegadores web, usan este código de una forma incorrecta, ya que usan el comando «GET» en vez de hacer una redirección.

Por ende, la mejor forma de crear redirecciones PHP es especificar el código a devolver. El código de estado HTTP 301 indica una redirección permanente, lo que puede causar problemas para restaurar tu página original.

Nosotros recomendamos que emplees el código de estado HTTP 303.

Comprueba la documentación

Además de siempre revisar los puntos básicos explicados anteriormente, hay que investigar la documentación del uso de redireccionamientos de PHP antes de publicarlos. Consultar el manual de PHP para asegurarte de que entiendes los cambios que vas a realizar, y seguir las mejores prácticas, viendo la documentación del W3C.

Asegúrate de proteger también tu sitio web de vulnerabilidades comunes. Si ya estás en la posición de tener que usar redireccionamientos PHP, es probable que la seguridad de tu sitio necesite una auditoría.

PHP
Cómo redireccionar usando PHP (de forma segura)

Otros métodos

Ahora bien, luego de ver la cantidad de problemas que pueden surgir al redirigir usando PHP, seguramente te estás preguntando si deberías utilizarlo. Esa es una buena pregunta. Generalmente cuando se redirecciona usando PHP, se realiza más rápido que mediante otros métodos, por eso es que puede ser una importante herramienta para optimizar la velocidad del sitio web. Sin embargo, existen otras opciones disponibles.

Hay dos enfoques principales para hacer esto. Puedes emplear el elemento HTML <meta> para redirigir desde la parte HTML de tu página, o utilizar JavaScript.

El primer enfoque (<meta>) se vería así:

<meta http-equiv="refresh" content="0;url=newpage.php">

El segundo enfoque (JavaScript) es un poco más elegante y ciertamente se ve más profesional:

window.location.replace("http://nuevapagina.php/");

Los 2 enfoques se ejecutarán un poco más lento que una redirección «header ()» inmediata, pero posiblemente sean más flexibles.

Conclusión

Siguiendo la guía deberías poder redireccionar con PHP de forma segura, pero si quieres usar múltiples redireccionamientos PHP, probablemente sea hora de repensar la estructura de tu sitio.

No siempre se genera un servidor web de la misma manera, por lo que si envías a tus visitantes en caminos complicados alrededor de tu sitio, seguramente se verá afectado su rendimiento. Esto puede mejorarse hasta cierto punto usando un proveedor de alojamiento web asequible, pero solo hasta cierto punto.

También podría ser el caso, que la página esté recopilando datos de los usuarios sin que lo sepas, o si estás empleando un software de análisis web para rastrear el rendimiento de tu sitio.

Entonces, siempre presta atención a los redireccionamientos de PHP, y úsalos sólo cuando sea necesario.

Emanuel Duarte
Emanuel Duarte

Emanuel Duarte es un apasionado de las tecnologías y el uso de ellas para el armado de desarrollo web, cuya especialización es la principal plataforma del mercado: Wordpress.
Adicionalmente, se destaca por conocer las herramientas aledañas que convierten los sitios webs en confiables, seguros y ágiles.