Post/Redirect/Get

De Seobility Wiki
Saltar a: navegación, buscar

¿Qué propósito tiene el patrón Post/Redirect/Get o PRG?

Post/Redirect/Get
Imagen: Post/Redirect/Get - Autor: Seobility - Licencia: CC BY-SA 4.0

El patrón Post/Redirect/Get evita que se dupliquen los envíos de formularios en un sitio web cuando una persona actualiza una página o hace clic en la flecha para retroceder en su navegador. Este problema puede ocurrir, por ejemplo, con los pedidos en una tienda online o los registros en un sitio web.

Vamos a verlo con un ejemplo: supongamos que una o un usuario/a completa un pedido en una tienda online y llega hasta la página de confirmación. En ese punto el o la visitante hace clic en "Actualizar" o en "Atrás" en su navegador. Si no se implementara el patrón Post/Redirect/Get, el formulario POST (o sea el de pedido) se enviaría nuevamente al servidor, lo que sin duda no es lo que la persona desea.

En la práctica, cuando ocurre una situación como esta, los navegadores reaccionan abriendo una ventana y preguntando a las usuarias y usuarios si realmente quieren reenviar los datos. Sin embargo, el público en general no tiene conocimientos técnicos profundos y a menudo no comprende esta pregunta, perjudicando de esta forma una buena experiencia de la usabilidad en el sitio. Esta es otra razón más por la que se debe implementar el patrón Post/Redirect/Get en los formularios de cada sitio web.

Información de fondo: Solicitudes GET vs. POST

Básicamente, se pueden enviar a un servidor tanto peticiones GET como POST. Una solicitud GET se utiliza para pedir datos a un servidor, como archivos HTML, imágenes, etc. Estos formularios pueden ser rastreados por Google.

El método POST, en cambio, es un método de transferencia de datos a un servidor. A diferencia del método GET, Google no puede seguir los formularios POST en la mayoría de los casos.

¿Cómo funciona Post/Redirect/Get?

Para explicar cómo funciona el patrón Post/Redirect/Get, volveremos a utilizar el ejemplo anterior de hacer un pedido en una tienda online. El proceso se puede dividir en tres pasos:

  • Paso 1 (POST): un o una usuario/a completa su pedido y envía una solicitud POST al servidor a través de su navegador. El servidor, a su vez, procesa esta solicitud y guarda el pedido en una base de datos.
  • Paso 2 (REDIRECT): en lugar de enviar la página de confirmación directamente a el o la navegante, el servidor responde al navegador con una redirección (con código de estado 3xx) a una nueva URL, que lleva a la página de confirmación.
  • Paso 3 (GET): debido a la redirección, el navegador envía entonces una nueva petición GET al servidor (ya que debe recuperar una nueva URL), para solicitar la página de confirmación.

Si la usuaria o usuario actualiza en ese momento la página, el navegador envía otra petición GET y el servidor responde con la página de confirmación. Sin el patrón PRG, se volvería a enviar la solicitud POST al actualizar la página y el servidor guardaría el pedido dos veces.

Ejemplo de código

El siguiente ejemplo de código simplificado ilustra cómo funciona el patrón PRG:

If post data transferred Then
 execute code (such as database updates)
End If 

set location header with requested URL
End

Beneficios para el SEO

El patrón PRG no solo evita el envío múltiple de datos de formularios a un servidor web, sino que también puede resultar beneficioso en el ámbito de la optimización de motores de búsqueda (SEO), por ejemplo, en lo que respecta a la navegación por filtros o (navegación facetada) en las tiendas online.

Generalmente, este tipo de navegaciones representan un problema, ya que las distintas funciones de filtrado (por ejemplo, por color, tamaño, etc.) se implementan mediante parámetros de URL y, por lo tanto, generan un gran número de nuevas URLs.

Los numerosos enlaces internos generados requieren un porcentaje alto del limitado crawl budget o presupuesto de rastreo de un sitio web, que puede ser necesario para otras subpáginas. Además, pueden surgir problemas de contenidos duplicados si los productos mostrados en las distintas páginas de rastreo fueran muy similares.

El patrón PRG ofrece una solución a este problema: los enlaces de filtrado del sitio web se integran como un formulario POST. El elemento del formulario se oculta mediante el display:none o por visibility:0. Al hacer clic en un enlace de filtro de este tipo, se envía una solicitud POST al servidor.

Aquí el servidor responde con una redirección a la página de resultados original, que ahora contiene los parámetros correspondientes en su URL. Dado que los rastreadores no siguen el formulario POST, no pueden encontrar esta URL, lo que evita el contenido duplicado y utiliza eficazmente el presupuesto de rastreo en ese sitio web. Al mismo tiempo, la URL existe y puede, por tanto, ser compartida por las/los usuarias y usuarios.

Otra ventaja de este método es la posibilidad de controlar el link equity o link juice que se transmite desde una página. El enmascaramiento de enlaces mediante patrones PRG permite a las y los webmasters controlar exactamente a qué enlaces debe fluir este link juice y a cuáles no (= enlaces enmascarados), permitiendo así agrupar el enlace equity en páginas que son relevantes y que deben aparecer en los resultados de búsqueda de Google.

Relevancia práctica

Como se puede ver en los ejemplos anteriores, el patrón Post/Redirect/Get es relevante ya que las tiendas online pueden evitar la duplicación de pedidos y ocultar los enlaces de filtro de Google bot.

Un posible problema, sin embargo, es que el patrón PRG no es soportado por todos los sistemas de gestión de contenidos y su implementación autónoma requiere conocimientos profundos de programación. Por esta razón, a pesar de sus ventajas, el método no es utilizado por la mayoría de las operadoras y los operadores de tiendas.

En resumen: preguntas frecuentes sobre Post/Redirect/Get

¿Qué es el patrón Post/Redirect/Get?

Post/Redirect/Get es un patrón que se utiliza para evitar el envío duplicado de formularios, por ejemplo, en las tiendas online.

¿Cuál es un ejemplo de uso de Post/Redirect/Get?

Un ejemplo común es el comercio electrónico. Post/Redirect/Get puede evitar que la o el cliente repita el mismo pedido varias veces. Sin el patrón PRG, al refrescar la página de confirmación después de haber realizado una compra se podría reenviar el pedido nuevamente.

¿Cuál es la diferencia entre POST y GET?

Las solicitudes GET se utilizan para pedir archivos mientras que las POST se utilizan para transferir datos a un servidor.

¿Por qué Post/Redirect/Get es bueno para el SEO?

Post/Redirect/Get puede evitar problemas de contenido duplicado, especialmente si se usa la navegación facetada.

Contenidos relacionados