?page= bug, tanto no core quanto no plugin de sitemap

Parece que há dois ou três erros de “off-by-one” empilhados um sobre o outro aqui…

Assim que um tópico tem 18 posts, o sitemap_recent.xml começa a mostrar uma URL com um número de página https://forum.example.com/t/slug/123?page=2

Problema 1: A página 2 não existe até que um tópico tenha 20 posts, mas o sitemap mostra esse link.
Esperado: o sitemap não deve mostrar page=2 até que o tópico tenha 20 posts.

Problema 2: Quando um tópico tem 18 posts, esse link gera um erro “Essa página não existe”.
Esperado: isso deve ser tratado de forma elegante e o usuário deve ser redirecionado para o final do tópico.

Problema 3: Quando um tópico tem 19 posts, esse link gera a mensagem “Erro. Ao tentar carregar. Algo deu errado”.
Esperado: isso deve ser tratado de forma elegante e o usuário deve ser redirecionado para o final do tópico.

Problema 4: Quando um tópico tem mais de 20 posts, mas posts foram excluídos de modo que o total de posts visíveis é menor, o ?page=2 permanece no sitemap recente até que um novo post seja feito, momento em que desaparece.
Esperado: o número da página desaparece (ou, para páginas mais altas: é diminuído), refletindo a quantidade real de páginas disponíveis.

Pior: Esse link ruim também está aparecendo no Google!
Problema 5: quando esse link é clicado, gera um erro para o usuário.
Mas no Google, aparentemente, conteúdo duplicado está sendo criado.

Reprodução no Meta:

  1. Encontre um tópico com 17 ou 18 respostas:
    image

  2. Encontre-o em https://meta.discourse.org/sitemap_recent.xml

  3. Siga o link

  4. Verifique no Google

6 curtidas

Hmm, isso não é bom! Devemos corrigir e fazer o backport disso @zogstrip.

5 curtidas

@nbianca você pode adicionar isso à sua lista?

3 curtidas

O grande problema ao calcular os números das páginas estava no discourse-sitemap:

O problema com o cache foi corrigido aqui:

Também corrigi o problema de “não encontrado” no núcleo (leve), onde ele respondia com 200 ao solicitar a segunda página, mesmo tendo apenas 20 posts (1 página):

8 curtidas