Structure canonique pour /u/* causant l'indexation de nombreuses URL

Initialement, j’avais écrit ceci pour la catégorie « Bug »…

… mais ne me laissez pas vous arrêter si quelqu’un pense que cela justifie une PR ou un commit :crossed_fingers:

J’ai beaucoup étudié la structure canonique de Discourse ces 2 derniers mois et dans l’ensemble, c’est génial.

Les URL étranges avec des choses comme no_definitions=true ou /search?q= donnent le canonique correct.

Tout cela fonctionne lorsque le site est servi en version JS aux utilisateurs et aux robots d’exploration.

Mais il semble que les URL /u/* aient été négligées - elles ont des canoniques, mais vers des URL qui font que Google indexe des milliers d’URL supplémentaires.

La tâche :

J’aimerais que toutes les URL après le nom d’utilisateur canonisent vers la page de profil utilisateur principale.

Donc /u/FlyNumber est la page de profil principale.

Les URL suivantes auraient un canonique vers celle ci-dessus (au lieu de ce qui se passe maintenant, qui est un canonique vers elle-même) :

/u/FlyNumber/summary
/u/FlyNumber/activity
/u/FlyNumber/activity/topics
/u/FlyNumber/activity/replies
/u/FlyNumber/activity/likes-given
/u/FlyNumber/badges
1 « J'aime »

Est-ce pour votre configuration d’indexation personnalisée discutée ici ?

Si oui, il pourrait être utile de le mentionner afin que ceux qui examinent le poste sachent à quoi s’attendre.

Par défaut, les URL /u/ ne sont pas indexées, ce qui est défini à la fois dans robots.txt et transmis dans la requête d’en-tête initiale sur la page.

image

4 « J'aime »

Non, car j’ai arrêté d’utiliser prerender - il ne pouvait pas rendre le menu principal, le bouton de connexion, etc.
Le bot Google reçoit directement l’“application”.
J’ai le paramètre de site caché de Discourse configuré pour servir la version JS aux robots d’exploration. Google semble bien le gérer. (Plus de mises à jour à ce sujet bientôt.)

Bon point, /badges aussi…

J’utilise un fichier robots personnalisé et édité.

J’utilise Cloudflare workers pour modifier l’en-tête en 'index'.

/u/FlyNumber/summary
/u/FlyNumber/activity
/u/FlyNumber/activity/topics
/u/FlyNumber/activity/replies
/u/FlyNumber/activity/likes-given
/u/FlyNumber/badges

J’aimerais également souligner que la suppression complète des canoniques pour ces URL serait un pas dans la bonne direction. (IMHO ma méthode est meilleure pour le SEO)

Comme indiqué ci-dessus, il est défini sur noindex, donc je ne suis pas sûr pourquoi Discourse génère le canonique du tout.

Peut-être que quelqu’un connaît un moyen astucieux de faire cela avec JS et les workers Cloudflare ? De cette façon, j’évite de modifier le code de Discourse.

Je peux configurer un « déclencheur » sur /u/*/summary - (je ne peux déclencher que sur /u/*) - et exécuter quelque chose comme ceci :

const canonical = document.querySelector('link[rel="canonical"]');
if (canonical !== null) {
  canonical.href = 'NEW_HREF_GOES_HERE';
}

Que puis-je faire ici pour transmettre le nom d’utilisateur à NEW_HREF_GOES_HERE - et le canonique finirait par être /u/* au lieu de /u/*/summary.

Toute aide ici est très appréciée.

Edit
Peut-être que quelqu’un peut indiquer les pages GitHub pertinentes - je tenterai ma chance en modifiant le code.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.