Pas intéressé par les explications ? Ticket express pour le tl;pl 🚀
Si vous utilisez Grav, vous utilisez probablement des URLs avec paramètres Grav.
De manière analogue aux paramètres de requête URL classiques (query string, /blog?clef=valeur
), ils sont suffixés à l’URL de base sur la syntaxe /clef:valeur
et sont ensuite traités indépendamment par Grav. De même, ils peuvent également être chaînés.
À titre d’exemple, les collections peuvent par défaut être filtrées taxonomiquement, comme illustré sur ce blog :
/blog/tag:grav
filtrera les entrées étiquetées avec grav
./blog/archives_month:2020_09
filtrera les entrées écrites en septembre 2020./blog/tag:grav/archives_month:2020_09
filtrera les entrées étiquetées avec grav
et écrites en septembre 2020.Remarque : le filtrage taxonomique des collections peut être désactivé en positionnant url_taxonomy_filters: false
dans le front matter YAML.
Encore mieux : lorsqu’on utilise le thème par défaut (Quark), les plugins Taxonomy List et Archives permettent aux utilisateurs de filtrer les entrées du blog depuis la barre latérale à l’aide des paramètres Grav.
Cependant, si incluses dans la barre latérale, elles sont récupérables par les moteurs de recherche. Il semble qu’au moins Google les traite comme des pages séparées, malgré la présence d’éléments de lien canonique (canonical link elements) et plans de site (sitemaps) :
Comme spécifié dans la documentation Google, l’indexeur peut choisir d’ignorer les indicateurs fournis par le contenu :
Google choisit la page canonique en fonction d’un certain nombre de facteurs (ou indicateurs), à savoir : si la page est diffusée via le protocole HTTP ou HTTPS ; la qualité de la page ; la présence de l’URL dans un sitemap ; et tout attribut “rel=canonical”. Vous pouvez utiliser ces techniques pour indiquer votre préférence à Google, mais Google peut choisir une autre page canonique pour diverses raisons.
Ce comportement peut ne pas être souhaitable. Dans ce cas, le seul recours est de bloquer l’indexation en utilisant une balise <meta>
noindex
:
<meta name="robots" content="noindex">
Évidemment, nous ne voudrions bloquer l’indexation que pour les URLs avec paramètres Grav. L’inclusion de la balise <meta>
dans un modèle de base ne conviendrait pas : elle doit être insérée conditionnellement. Heureusement, la fonction Uri::params()
peut être utilisée pour déterminer si des paramètres Grav sont présents. Une PR est ouverte pour intégrer cette fonctionnalité à Quark via un paramètre de thème, mais en attendant…
Les URLs avec paramètres Grav peuvent être indexées par les moteurs de recherche (notamment Google), ce qui peut ne pas être souhaitable. L’utilisation d’une balise <meta>
noindex
insérée de manière conditionnelle permet d’indexer normalement les pages standards tout en ignorant les paramètres Grav :
{% if uri.params is not empty -%}
<meta name="robots" content="noindex">
{% endif %}