Tópicos antigos publicados via embed do WordPress estão sem as tags x-robots: noindex e canonical

Olá a todos,

Notei um comportamento estranho em tópicos antigos que foram publicados automaticamente do WordPress para o Discourse (para serem usados como seção de comentários).

Normalmente, quando um post é publicado dessa forma, o Discourse adiciona corretamente o X-Robots-Tag: noindex ao cabeçalho HTTP e define a URL canonical apontando de volta para o post do blog WordPress.

No entanto, descobri que tópicos mais antigos estão perdendo essas tags. O cabeçalho noindex desaparece e a tag canonical deixa de estar presente. Aqui estão alguns exemplos de tópicos onde isso está acontecendo:

Alguém sabe de uma maneira de corrigir esse problema?

Lembrem-se de que não tenho como saber exatamente quantos tópicos foram afetados até agora, mas parece ser bastante.

Seria ótimo se houvesse uma caixa de seleção nas configurações da categoria (ou tag?) que, quando ativada, adicionasse automaticamente noindex a todos os tópicos publicados sob essa categoria. Algo como:

[ ] Ocultar tópicos desta categoria nos resultados de busca.

Olá Thiago,

Só para eu entender, você está dizendo o seguinte:

  1. Você tem a configuração do site Embed set canonical URL ativada e sempre a manteve ativada.
  2. Você publicou vários tópicos do seu WordPress para o seu Discourse por meio do Plugin Discourse do WordPress ao longo de um período de tempo.
  3. Até recentemente, todos os tópicos do Discourse publicados conforme descrito em 2 tinham um link rel="canonical" com o href definido como a URL do WordPress em seu head.
  4. Em algum momento recente, você acha que um subconjunto desses tópicos que antes conformavam-se ao 3 agora têm um link rel="canonical" com o href definido como a URL do Discourse.

Isso está correto?

Olá, Angus!

Sim, é isso mesmo.

O `embed set canonical URL` também está habilitado:

Você pode ver aqui que novos tópicos são publicados com as tags noindex e canonical. Mas estou vendo tópicos antigos sem essas tags.

Thiago, se você tiver acesso ao servidor, poderia, por favor, obter o ID de um tópico onde a URL canônica não está funcionando, executar o seguinte no console do Rails e compartilhar o resultado.

./launcher enter app
rails c
TopicEmbed.with_deleted.find_by(topic_id: adicione o ID do tópico aqui)
discourse(prod)> TopicEmbed.with_deleted.find_by(topic_id:73608)
=> nil
discourse(prod)> TopicEmbed.with_deleted.find_by(topic_id:79015)
=> nil
discourse(prod)> TopicEmbed.with_deleted.find_by(topic_id:74248)
=> nil
discourse(prod)> TopicEmbed.with_deleted.find_by(topic_id:76598)
=> nil

Esse é o problema. Para que o recurso de URL canônica para incorporações funcione, o tópico precisa de um registro topic_embed. Você consegue pensar em algum motivo pelo qual esses tópicos podem não ter registros de incorporação?

Eu honestamente não sei o que poderia ter causado esses tópicos a perderem seus registros de topic_embed.

Mas, olhando para o quadro geral, não faria mais sentido seguir com a configuração que sugeri anteriormente? Se adicionarmos uma caixa de seleção diretamente nas configurações da categoria para aplicar noindex a todos os tópicos dentro dela, não teríamos que depender do recurso de incorporação ou nos preocupar se esses registros existem ou não.

Embora isso possa fazer sentido para o seu site, seria um recurso diferente de como as URLs canônicas dos tópicos incorporados funcionam. Você poderia implementá-lo, mas teria que fazê-lo como um plugin personalizado.

As URLs canônicas para incorporações funcionam conforme o esperado; no entanto, parece que, em algum momento, os registros de incorporação foram excluídos ou alguma outra operação foi realizada no seu site. O Discourse não exclui permanentemente os registros de incorporação de tópicos, então algo mais deve ter acontecido lá. A menos que você faça algum trabalho personalizado, será necessário republicar esses tópicos para criar os registros de incorporação novamente.

Embora isso se comporte de forma diferente dos embeds de tópicos, o controle de indexação no nível da categoria é um requisito básico de SEO para qualquer CMS moderno. Existem vários outros tópicos sobre o Meta que tratam disso, e torná-lo nativo resolveria vários casos de uso de uma só vez.

Posso tentar criar um plugin usando IA, já que Ruby não é minha stack, mas isso realmente deveria ser uma funcionalidade nativa.

Quanto aos registros ausentes: não executamos nenhum comando ou operação de banco de dados que pudesse causar isso. Além disso, republicar não é viável. Temos quase 50 mil posts e nem sabemos quais deles foram afetados. Corrigir isso exigiria scripts complexos de API para encontrar, excluir e republicar tudo…