Las redirecciones PHP son herramientas increíblemente útiles, pero también pueden ser peligrosas si no se implementan correctamente.

Si ya ha seguido nuestra introducción a PHP 7.4y nuestra guía sobre cómo crear un sitio web paso a paso, ya sabes que la función encabezado () se puede usar para redirigir fácilmente a un usuario de una página a otra. De hecho, sin embargo, usar esta función no es tan simple como parece. En esta guía, le mostraremos cómo hacer una redirección PHP que no causará ningún problema en el futuro.

El método básico para un redireccionamiento PHP

La mayoría de las guías le dirán que, para hacer una redirección PHP, simplemente puede usar la función encabezado () en la parte superior de tus páginas. Para hacer esto, usa la función para enviar una nueva URL, como esta:

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

Esta función de encabezado debe colocarse antes de pasar cualquier HTML o texto a los navegadores de los usuarios, por lo que debe estar en la parte superior de la página. Eso significa que debe venir antes de la declaración , antes de cualquier código Java y PHP. Luego envía a los usuarios a la nueva URL.

Aunque pueda parecer simple, cuando se trata de la función encabezado (), la simplicidad del código puede causar una falsa sensación de seguridad. Entonces, veamos cómo puede usar esta función correctamente.

Die () y Exit ()

Primero, debes usar los modificadores morir () o salida () cada vez que usa una redirección. En resumen, el problema es que los rastreadores y los robots pueden ignorar los encabezados, por lo que la página que estaba redirigiendo es totalmente accesible para ellos. Si, en otras palabras, está utilizando una redirección de encabezado para proteger una página en particular, no ofrece ninguna protección.

Es por eso que debe desactivar la redirección si se ignora. La forma de hacerlo es adjuntar morir () o salida () después de su redirección:

header("Location: .$newURL.php");

die();

URLs relativas y absolutas

A continuación, hablemos de las URL relativas y absolutas en los redireccionamientos. RFC 7231 le permite usar ambos, pero debe tener mucho cuidado al usar redireccionamientos relativos. Esto se debe a que algunos creadores de sitios web recopilan y renombran páginas PHP. Esto significa que si está trabajando en su PHP a través de un creador de sitios web, puede terminar rompiendo todos sus redireccionamientos

Desafortunadamente, en este momento no hay una forma real de solucionar este problema, aparte de tener cuidado sobre dónde apuntan los redireccionamientos.

Códigos Statis

El tercer problema con las redirecciones PHP estándar es que el operador “local” de PHP aún devuelve el código HTTP 302 . No debe aceptar esto, porque muchos navegadores web implementan este código de una manera totalmente opuesta a cómo debería funcionar: esencialmente usan el comando GET en lugar de realizar una redirección “real”.

La mejor práctica al crear redirecciones PHP es, por lo tanto, especificar el código que se devuelve. Desafortunadamente, el código correcto para usar es un punto de discusión. HTTP 301 indica una redirección permanente, que puede causar problemas al restaurar su página original. Desafortunadamente, HTTP 303 es percibido como “otro” por muchos navegadores y puede causar problemas con la indexación de su página por parte de los motores de búsqueda.

En la práctica, y hasta que todo se resuelva, use HTTP 303.

Revise la documentación

Además de tomar las precauciones básicas anteriores, tómese el tiempo de leer la documentación sobre el uso de redireccionamientos de PHP antes de publicarlos. Deberías consultar el manual de PHP para asegurarse de que comprende lo que está haciendo, además de verificar la documentación del W3C para asegurarte de que estás siguiendo las mejores prácticas.

Y mientras lee, recuerde proteger su sitio de vulnerabilidades comunes también: si ya está en el proceso de tener que usar redireccionamientos PHP, es probable que la seguridad del sitio necesite una auditoría.

Otros metodos

Teniendo en cuenta todos estos problemas, probablemente se esté preguntando por qué usaría una redirección PHP. Esa es una gran pregunta. Aunque los redireccionamientos de PHP generalmente se realizan más rápidamente que otros tipos de redireccionamientos y, por lo tanto, pueden ser una herramienta importante para mejorar la velocidad del sitio web, existen otras opciones disponibles.

Hay dos enfoques principales para hacer esto. Puedes usar el elemento HTML <objetivo> para redirigir desde la parte HTML de su página o usar JavaScript. El primer enfoque: usar <objetivo> se vería así:

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

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

Ambos enfoques se ejecutarán un poco más lentamente que la redirección inmediata del encabezamiento(), pero sin duda son más flexibles.

Palabra final

Si bien seguir los pasos anteriores significa que las redirecciones de PHP se ejecutan de forma segura, si está en condiciones de utilizar varias redirecciones de PHP, probablemente sea hora de repensar la estructura de su sitio web.

Hay algunas buenas razones para hacerlo. La primera es que no todos los servidores web se crean de la misma manera y, si envía a todos los visitantes en una ruta tortuosa a través del sitio, afectará el rendimiento. Esto puede mejorarse hasta cierto punto, utilizando un proveedor de alojamiento asequible, pero solo hasta cierto punto.

La segunda razón es que la página desde la que está redirigiendo puede estar recopilando datos sobre sus visitantes sin que usted lo sepa, especialmente si está utilizando un software de análisis web para rastrear el rendimiento de su sitio web. En nuestro mundo post-LGPD, esto puede tener consecuencias significativas.

Entonces, en resumen: tenga cuidado con los redireccionamientos de PHP, úselo correctamente y úselo solo donde y cuando sea absolutamente necesario.