Hugo SEO : noindex sur les taxonomies pour corriger l'alerte Bing "too many thin pages"

Contexte
Bing Webmaster Tools remontait une recommandation “There are too many pages with insufficient content” (sévérité : modérée) — 15 pages en erreur, toutes du même type :
https://www.arleo.eu/en/tags/svg/https://www.arleo.eu/en/tags/sonarr/https://www.arleo.eu/en/categories/incidents/- etc.
Ces pages sont les taxonomies Hugo — les listes par tag et par catégorie. Elles ne contiennent pas d’article en elles-mêmes, juste une liste de liens. Pour Bing, c’est du thin content.
Stratégie choisie
Trois options s’offraient :
- Bloquer via
robots.txt→ déconseillé : empêche le crawl, masque les liens internes - Enrichir le contenu des pages de taxonomie → trop coûteux pour un blog technique
noindex,follow→ la bonne réponse : on dit aux robots de ne pas indexer la page, mais de suivre les liens vers les articles
L’option 3 est retenue. Le follow préserve le maillage interne — les robots continuent de découvrir les articles via ces pages.
Implémentation
Principe Hugo : .Kind
Hugo classe chaque page par son kind :
| Kind | Exemple d’URL |
|---|---|
home | / |
page | /posts/mon-article/ |
section | /posts/ |
taxonomy | /tags/, /categories/ |
term | /tags/hugo/, /categories/homelab/ |
Les pages à traiter sont .Kind == "taxonomy" et .Kind == "term".
Modification : layouts/baseof.html
Le site utilise un baseof.html custom qui surcharge déjà le thème LoveIt. C’est l’endroit naturel pour centraliser la logique robots.
Avant :
<meta name="robots" content="index, follow" />Après :
{{- if .Params.robots -}}
<meta name="robots" content="{{ .Params.robots }}" />
{{- else if or (eq .Kind "taxonomy") (eq .Kind "term") -}}
<meta name="robots" content="noindex,follow" />
{{- else -}}
<meta name="robots" content="index, follow" />
{{- end -}}La cascade à trois niveaux :
- Front matter
robots:— priorité absolue pour les exceptions futures - Taxonomies —
noindex,followautomatique - Tout le reste —
index, follow
Un seul fichier modifié, zéro duplication, zero override de layout de taxonomie.
Retrait des taxonomies du sitemap
Les pages noindex dans un sitemap sont une incohérence — on dit au robot de ne pas indexer une page mais on l’y pointe explicitement. La bonne pratique est de les retirer.
Le sitemap LoveIt inclut toutes les pages. Un override minimal dans layouts/sitemap.xml :
{{- $excludedKinds := slice "taxonomy" "term" -}}
{{- range (where .Data.Pages "Section" "!=" "gallery") -}}
{{- if not (in $excludedKinds .Kind) -}}
<url>
<loc>{{- .Permalink -}}</loc>
...
</url>
{{- end -}}
{{- end -}}Résultat : le sitemap EN passe de 117 à 40 URLs (les 77 entrées de taxonomie supprimées).
Vérification
Après rebuild :
# Pages taxonomy → noindex,follow
curl -s https://www.arleo.eu/tags/ | grep -o 'name=robots[^>]*>'
# → name=robots content="noindex,follow">
curl -s https://www.arleo.eu/en/tags/sonarr/ | grep -o 'name=robots[^>]*>'
# → name=robots content="noindex,follow">
# Articles → index, follow
curl -s https://www.arleo.eu/en/posts/debug-seo-404-broken-links/ | grep -o 'name=robots[^>]*>'
# → name=robots content="index, follow">
# Sitemap propre
curl -s https://www.arleo.eu/en/sitemap.xml | grep -o '<loc>[^<]*</loc>' | grep 'tags\|categories' | wc -l
# → 0Fichiers modifiés
| Fichier | Rôle |
|---|---|
layouts/baseof.html | Logique robots conditionnelle |
layouts/sitemap.xml | Override sitemap — exclude taxonomy/term |
Le robots.txt n’a pas été touché. Les URLs de taxonomie restent accessibles et crawlables — seule leur indexation est désactivée.
Côté Bing
La correction est immédiate côté technique. Bing mettra quelques jours à re-crawler les pages et mettre à jour la recommandation. Pour accélérer : dans Bing Webmaster Tools → Recommendations → valider manuellement ou soumettre une demande de recrawl du sitemap.