?page= bug, sia nel core che nel sitemap plugin

Sembra che qui ci siano due o tre errori di “off-by-one” sovrapposti…

Non appena un argomento ha 18 post, sitemap_recent.xml inizia a mostrare un URL con un numero di pagina https://forum.example.com/t/slug/123?page=2.

Problema 1: La pagina 2 non esiste finché un argomento non ha 20 post, ma lo sitemap mostra comunque questo link.
Comportamento atteso: lo sitemap non deve mostrare page=2 finché l’argomento non ha 20 post.

Problema 2: Quando un argomento ha 18 post, quel link restituisce un errore “Questa pagina non esiste”.
Comportamento atteso: la situazione deve essere gestita in modo elegante e l’utente deve essere reindirizzato alla fine dell’argomento.

Problema 3: Quando un argomento ha 19 post, quel link restituisce il messaggio “Errore. Durante il caricamento qualcosa è andato storto”.
Comportamento atteso: la situazione deve essere gestita in modo elegante e l’utente deve essere reindirizzato alla fine dell’argomento.

Problema 4: Quando un argomento ha più di 20 post, ma alcuni sono stati eliminati e il totale dei post visibili è inferiore, ?page=2 rimane nello sitemap recente finché non viene aggiunto un nuovo post, momento in cui scompare.
Comportamento atteso: il numero di pagina deve scomparire (o, per pagine superiori, diminuire) riflettendo il numero effettivo di pagine disponibili.

Peggio ancora: questo link errato viene anche indicizzato da Google!
Problema 5: quando quel link viene cliccato, restituisce un errore all’utente.
Tuttavia, su Google sembra che venga creato contenuto duplicato.

Riproduzione su Meta:

  1. Trova un argomento con 17 o 18 risposte:
    image

  2. Trovalo in https://meta.discourse.org/sitemap_recent.xml

  3. Segui il link

  4. Controlla su Google

6 Mi Piace

Hmm, questo non va bene! Dovremmo correggere e fare il backport di quello @zogstrip.

5 Mi Piace

@nbianca puoi aggiungere questo alla tua lista?

3 Mi Piace

Il grosso problema nel calcolo dei numeri di pagina era in discourse-sitemap:

Il problema con la memorizzazione nella cache è stato risolto qui:

Ho anche risolto il problema “non trovato” nel core (minore), in cui veniva restituito un 200 quando si richiedeva la seconda pagina, ma erano presenti solo 20 post (1 pagina):

8 Mi Piace