Uno dei nostri clienti ha rilevato il seguente problema relativo alla SEO, che riesco a riprodurre qui su meta.
Quando Discourse viene visitato da un crawler, inserisce link di paginazione ?page=XX in questo modo:
<link rel="next" href="/t/slug/123?page=2">
e
<span itemprop='name'><b><a rel="next" itemprop="url" href="/t/slug/123?page=2">next page â</a></b></span>
Quando una tale pagina viene caricata in un browser, Discourse esegue un reindirizzamento JavaScript verso un URL /t/slug/123/NN dove NN è il numero di un post.
Quindi https://meta.discourse.org/t/post-rate-limit-trigger-for-a-topic-thats-heating-up/98294?page=2 reindirizza a https://meta.discourse.org/t/post-rate-limit-trigger-for-a-topic-thats-heating-up/98294/23
e https://meta.discourse.org/t/post-rate-limit-trigger-for-a-topic-thats-heating-up/98294?page=3 reindirizza a https://meta.discourse.org/t/post-rate-limit-trigger-for-a-topic-thats-heating-up/98294/45
Tuttavia, a volte quella pagina contiene un URL canonico che non corrisponde alla pagina originale che era stata richiesta.
Nell’esempio sopra, ?page=3 reindirizza al post 45 e la pagina del post 45 contiene un URL canonico ?page=2
<link rel="canonical" href="https://meta.discourse.org/t/post-rate-limit-trigger-for-a-topic-thats-heating-up/98294?page=2" />
Citando dal rapporto SEO del cliente:
Questo crea una catena di tag canonici e reindirizzamenti e Google inizierà a non fidarsi dei tag canonici inseriti.
Non riesco a capire da dove provenga questo problema. A volte l’URL canonico ha un numero di pagina più alto, a volte fa riferimento a un numero di pagina più basso (come in questo esempio), e a volte è corretto.
Pensavo potesse essere legato a post cancellati o sussurri, ma un argomento con molti post rimossi non mostra questo comportamento di per sé (come https://meta.discourse.org/t/topic-list-previews/101646?page=5 che va al post 471 (!) e ha l’URL canonico corretto ?page=5). Penso che potrebbe trattarsi di un errore off-by-one.