Uno de nuestros clientes encontró el siguiente problema relacionado con SEO, que puedo reproducir aquí en Meta.
Cuando un rastreador visita Discourse, este inserta enlaces de paginación ?page=XX de la siguiente manera:
<link rel="next" href="/t/slug/123?page=2">
y
<span itemprop='name'><b><a rel="next" itemprop="url" href="/t/slug/123?page=2">siguiente página </a></b></span>
Cuando se carga dicha página en un navegador, Discourse realiza una redirección mediante JavaScript a una URL /t/slug/123/NN, donde NN es el número de un mensaje.
Así, https://meta.discourse.org/t/post-rate-limit-trigger-for-a-topic-thats-heating-up/98294?page=2 se redirige a https://meta.discourse.org/t/post-rate-limit-trigger-for-a-topic-thats-heating-up/98294/23
y https://meta.discourse.org/t/post-rate-limit-trigger-for-a-topic-thats-heating-up/98294?page=3 se redirige a https://meta.discourse.org/t/post-rate-limit-trigger-for-a-topic-thats-heating-up/98294/45.
Sin embargo, a veces esa página contiene una URL canónica que no corresponde con la página original que se solicitó.
En el ejemplo anterior, ?page=3 se redirige al mensaje 45 y la página del mensaje 45 contiene una URL canónica ?page=2:
<link rel="canonical" href="https://meta.discourse.org/t/post-rate-limit-trigger-for-a-topic-thats-heating-up/98294?page=2" />
Cita del informe SEO del cliente:
Esto crea una cadena de etiquetas canónicas y redirecciones, y Google comenzará a no confiar en las etiquetas canónicas implementadas.
No logro averiguar de dónde proviene esto. A veces la URL canónica tiene un número de página mayor, a veces se refiere a una página menor (como en este ejemplo), y a veces es correcta.
Pensé que podría deberse a mensajes eliminados o susurros, pero un tema con muchos mensajes eliminados no muestra este comportamiento en sí mismo (por ejemplo, https://meta.discourse.org/t/topic-list-previews/101646?page=5 va al mensaje 471 (!), que tiene la URL canónica correcta ?page=5). Creo que esto podría ser un error de uno menos (off-by-one).