?page= bug, tanto en el núcleo como en el plugin de sitemap

Parece que hay dos o tres errores de “fuera de uno” apilados uno sobre otro aquí…

En cuanto un tema tiene 18 publicaciones, el archivo sitemap_recent.xml comienza a mostrar una URL con un número de página https://forum.example.com/t/slug/123?page=2.

Problema 1: La página 2 no existe hasta que un tema tiene 20 publicaciones, pero el mapa del sitio muestra este enlace.
Esperado: el mapa del sitio no debe mostrar page=2 hasta que el tema tenga 20 publicaciones.

Problema 2: Cuando un tema tiene 18 publicaciones, ese enlace muestra un error “Esa página no existe”.
Esperado: esto se maneja de forma elegante y el usuario es redirigido al final del tema.

Problema 3: Cuando un tema tiene 19 publicaciones, ese enlace muestra el mensaje “Error. Al intentar cargar. Algo salió mal”.
Esperado: esto se maneja de forma elegante y el usuario es redirigido al final del tema.

Problema 4: Cuando un tema tiene más de 20 publicaciones, pero algunas han sido eliminadas de modo que el total de publicaciones visibles es menor, el parámetro ?page=2 permanece en el mapa del sitio reciente hasta que se realiza una nueva publicación, momento en el cual desaparece.
Esperado: el número de página desaparece (o, para páginas superiores, disminuye) reflejando la cantidad real de páginas disponibles.

Peor aún: ¡Este enlace incorrecto también aparece en Google!
Problema 5: cuando se hace clic en ese enlace, se muestra un error al usuario.
Pero en Google, aparentemente se está creando contenido duplicado.

Reproducción en Meta:

  1. Busca un tema con 17 o 18 respuestas:
    image

  2. Encuéntralo en https://meta.discourse.org/sitemap_recent.xml

  3. Sigue el enlace

  4. Verifica en Google

6 Me gusta

¡Hmm, eso no es bueno! Deberíamos solucionarlo y hacer un backport de eso, @zogstrip.

5 Me gusta

@nbianca ¿puedes añadir esto a tu lista?

3 Me gusta

El gran problema al calcular los números de página estaba en discourse-sitemap:

El problema con la caché se solucionó aquí:

También solucioné el problema de «no encontrado» en el núcleo (menor), donde respondía con un 200 al solicitar la segunda página, aunque solo hubiera 20 publicaciones (1 página):

8 Me gusta