Les anciens sujets publiés via l'intégration WordPress manquent les balises x-robots: noindex et canonical

Bonjour à tous,

J’ai remarqué un comportement étrange avec d’anciens sujets publiés automatiquement depuis WordPress vers Discourse (pour servir de section de commentaires).

Habituellement, lorsqu’un article est publié de cette manière, Discourse ajoute correctement l’en-tête HTTP X-Robots-Tag: noindex et définit l’URL canonical pointant vers l’article du blog WordPress.

Cependant, j’ai découvert que les anciens sujets perdent ces balises. L’en-tête noindex disparaît et la balise canonique n’est plus présente. Voici quelques exemples de sujets où ce problème se produit :

Quelqu’un connaît-il une solution pour corriger ce problème ?

Gardez à l’esprit que je n’ai aucun moyen de savoir exactement combien de sujets ont été affectés jusqu’à présent, mais il semble qu’il y en ait assez nombreux.

Ce serait formidable s’il existait une case à cocher dans les paramètres de la catégorie (ou du tag ?) qui, une fois activée, ajouterait automatiquement noindex à tous les sujets publiés sous cette catégorie. Quelque chose comme :

[ ] Masquer les sujets de cette catégorie dans les résultats de recherche.

Salut Thiago,

Pour bien comprendre, est-ce que tu veux dire ce qui suit :

  1. Tu as activé le paramètre du site « Définir l’URL canonique pour les intégrations » et il a toujours été activé.
  2. Tu as publié plusieurs sujets depuis ton WordPress vers ton Discourse via le plugin WordPress Discourse sur une certaine période.
  3. Jusqu’à récemment, tous les sujets Discourse publiés comme décrit en 2 comportaient une balise link rel="canonical" dont l’attribut href pointait vers l’URL WordPress dans leur head.
  4. Récemment, tu penses qu’un sous-ensemble de ces sujets, qui respectaient auparavant le point 3, comporte maintenant une balise link rel="canonical" dont l’attribut href pointe vers l’URL Discourse.

Est-ce exact ?

Salut Angus !

Oui, c’est bien ça.

L’option embed set canonical URL est également activée :

Vous pouvez voir ici que les nouveaux sujets sont publiés avec les balises noindex et canonical. Cependant, je constate que les anciens sujets ne possèdent pas ces balises.

Thiago, si tu as accès au serveur, pourrais-tu s’il te plaît récupérer l’ID d’un sujet dont l’URL canonique ne fonctionne pas, exécuter les commandes suivantes dans la console Rails et partager le résultat.

./launcher enter app
rails c
TopicEmbed.with_deleted.find_by(topic_id: ajoute l'ID du sujet ici)
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

C’est le problème. Pour que la fonctionnalité d’URL canonique pour les intégrations fonctionne, le sujet doit posséder un enregistrement topic_embed. Pensez-vous à une raison pour laquelle ces sujets n’auraient pas d’enregistrements d’intégration ?

Je ne sais pas vraiment ce qui a pu causer l’absence des enregistrements topic_embed pour ces sujets.

Mais en considérant la situation dans son ensemble, ne serait-il pas plus logique d’opter pour la configuration que j’ai suggérée plus tôt ? Si nous ajoutons une case à cocher directement dans les paramètres de la catégorie pour appliquer noindex à tous les sujets qu’elle contient, nous n’aurions plus besoin de nous fier à la fonctionnalité d’intégration ni de nous soucier de l’existence de ces enregistrements.

Bien que cela puisse avoir du sens pour votre site, il s’agirait d’une fonctionnalité différente de la manière dont les URL canoniques des intégrations de sujets fonctionnent. Vous pourriez le développer, mais vous devriez le faire sous forme de plugin personnalisé.

Les URL canoniques pour les intégrations fonctionnent comme prévu ; cependant, il semble qu’à un moment donné, les enregistrements d’intégration aient été supprimés, ou qu’une autre opération ait été effectuée sur votre site. Discourse ne supprime pas définitivement les enregistrements d’intégration de sujets, donc autre chose a dû se produire. À moins que vous ne réalisiez un travail personnalisé, vous devrez republier ces sujets pour recréer les enregistrements d’intégration.

Bien que cela se comporte différemment des intégrations de sujets, le contrôle de l’indexation au niveau des catégories est une exigence SEO de base pour tout CMS moderne. Il existe plusieurs autres sujets Meta à ce sujet, et le rendre natif résoudrait plusieurs cas d’usage à la fois.

Je pourrais essayer de créer un plugin en utilisant l’IA, car Ruby n’est pas ma stack, mais cela devrait vraiment être une fonctionnalité native.

En ce qui concerne les enregistrements manquants : nous n’avons exécuté aucune commande ou opération de base de données susceptible de causer cela. De plus, la republishing n’est pas viable. Nous avons près de 50 000 messages, et nous ne savons même pas lesquels sont concernés. Corriger cela nécessiterait des scripts API complexes pour trouver, supprimer et republier tout…