Einer unserer Kunden hat das folgende SEO-bezogene Problem festgestellt, das ich hier auf Meta nachstellen kann.
Wenn Discourse von einem Crawler besucht wird, fügt Discourse Paginierungslinks ?page=XX wie folgt ein:
<link rel="next" href="/t/slug/123?page=2">
und
<span itemprop='name'><b><a rel="next" itemprop="url" href="/t/slug/123?page=2">next page â</a></b></span>
Wenn eine solche Seite im Browser geladen wird, führt Discourse eine JavaScript-Weiterleitung zu einer URL im Format /t/slug/123/NN durch, wobei NN eine Beitragsnummer ist.
Somit wird https://meta.discourse.org/t/post-rate-limit-trigger-for-a-topic-thats-heating-up/98294?page=2 zu https://meta.discourse.org/t/post-rate-limit-trigger-for-a-topic-thats-heating-up/98294/23 weitergeleitet
und https://meta.discourse.org/t/post-rate-limit-trigger-for-a-topic-thats-heating-up/98294?page=3 wird zu https://meta.discourse.org/t/post-rate-limit-trigger-for-a-topic-thats-heating-up/98294/45 weitergeleitet.
Allerdings enthält diese Seite manchmal eine Canonical-URL, die nicht mit der ursprünglich angeforderten Seite übereinstimmt.
Im obigen Beispiel wird ?page=3 zu Beitrag 45 weitergeleitet, und die Seite für Beitrag 45 enthält eine Canonical-URL ?page=2:
<link rel="canonical" href="https://meta.discourse.org/t/post-rate-limit-trigger-for-a-topic-thats-heating-up/98294?page=2" />
Zitat aus dem SEO-Bericht des Kunden:
Dies erzeugt eine Kette von Canonical-Tags und Weiterleitungen, und Google beginnt, die eingesetzten Canonical-Tags nicht mehr zu vertrauen.
Ich kann nicht herausfinden, woher das kommt. Manchmal hat die Canonical-URL eine höhere Seitenzahl, manchmal bezieht sie sich auf eine niedrigere Seitenzahl (wie in diesem Beispiel), und manchmal ist sie korrekt.
Ich dachte, es könnte mit gelöschten Beiträgen oder „Whispers“ zu tun haben, aber ein Thema mit vielen entfernten Beiträgen zeigt dieses Verhalten nicht per se (wie bei https://meta.discourse.org/t/topic-list-previews/101646?page=5, das zu Beitrag 471 (!) führt, der die korrekte Canonical-URL ?page=5 enthält). Ich denke, es könnte sich um einen Off-by-One-Fehler handeln.