La navigation à facettes est un sujet récurrent sur les sites à forte volumétrie de pages qui ont des listings produits ; si elle est implémentée correctement, elle peut être très bénéfique pour un site. En effet, la création de nouvelles pages plus précises permet de répondre à plus de requêtes pour plus de visibilité dans les résultats de recherche.
En plus de proposer une architecture de site logique et un maillage interne optimisé, la navigation à facettes permet aussi aux utilisateurs de trouver rapidement le(s) produit(s) qu’ils recherchent.
La mise en place d’une navigation à facettes demande de respecter certaines règles sinon elle peut entraîner d’importants problèmes comme la création en masse de pages inutiles / dupliquées ou l’apparition de spider traps.
La navigation à facettes peut être généralement trouvée sur les pages listing de sites e-commerce ou immobilier : elle correspond aux différentes combinaisons qu’un utilisateur peut sélectionner pour affiner sa recherche.
Exemple de navigation à facettes pour les t-shirts homme sur Zalando
Parmi ces combinaisons disponibles, il est important de faire la différence entre une facette et un filtre.
Facette : C’est une page catégorie filtrée que l’on souhaite rendre crawlable et indexable. Cette dernière répond à des requêtes d’utilisateurs ayant un certain volume de recherche, sa création apporte de la valeur et potentiellement du trafic au site.
Filtre : C’est une page catégorie filtrée uniquement pour l’utilisateur. Cette dernière ne répond pas à des requêtes ayant du volume de recherche mensuel ; elle permet seulement aux utilisateurs de rendre une page catégorie plus précise et de naviguer parmi les différents attributs d’un produit.
Comme mentionné précédemment, la navigation à facettes est bénéfique pour les sites à forte volumétrie de pages qui possèdent des listings de produits / biens. Une ouverture de facettes gérée de manière optimale aura principalement 3 avantages :
Pour choisir les facettes intéressantes à ouvrir, il est important de respecter 3 étapes :
L’étude sémantique : Recherche sémantique classique où les mots clés relatifs au site sont récupérés ;
La catégorisation : Catégorisation des mots clés selon la méthode habituelle qui prend en compte les différentes segmentations pertinentes des facettes (ex : Prix, taille, marque, genre, matière, etc.)
L’analyse des résultats : Analyse des résultats de la recherche sémantique avec des TCD qui mettent en avant les différentes catégories et combinaisons possibles. L’idée est de récupérer le volume de recherche associé à chaque croisement possible.
Par exemple, il est intéressant d’ouvrir certaines couleurs sur la catégorie T-shirt :
Si la navigation à facettes est implémentée correctement, elle permettra d’augmenter le nombre de pages qualifiées pour les utilisateurs et les robots, par contre si cette dernière n’est pas gérée de manière optimale, elle peut entraîner plusieurs typologies de problèmes :
Un spider trap est la création d’un très grand nombre ou d’un nombre illimité d’URLs empêchant l’exploration correcte d’un site. Comme la navigation à facettes permet de créer un nombre de combinaisons importantes, elle peut facilement être sujette à des spider traps si elle n’est pas gérée correctement.
Un nombre important de liens non indexables dans une structure de site entraînera forcément un gaspillage du crawl (même si à terme ces liens seront moins crawlés).
Un grand nombre de liens non crawlables au sein d’une structure de site n’est pas optimal pour la répartition de la popularité interne.
Parmi les pages créées automatiquement par la navigation à facettes, certaines peuvent avoir un contenu identique ou très similaire. Ce genre de cas doit être évité pour ne pas créer du contenu dupliqué interne.
De la même manière que pour les pages ayant un contenu similaire, celles n’ayant pas de contenu ne doivent pas être générées.
Tout d’abord, il faut définir si une facette doit être ouverte si plusieurs variables sont sélectionnées simultanément (au sein d’une même catégorie ou non)
Exemple: j’ouvre mes facettes genre + couleurs
Exemple: je n’ouvre pas mes facettes genre lorsque homme + enfant est sélectionné
Exemple: je n’ouvre pas mes facettes genre + motifs
Une facette doit s’ouvrir automatiquement seulement lorsque le nombre de produits / bien est suffisant
Exemple: j’ouvre mes facettes genre (homme ou femme) lorsque j’ai au minimum 3 t-shirts à vendre
Les facettes ouvertes doivent contenir un balisage SEO classique optimisé, il faut donc définir des règles de balisage automatique.
Les facettes étant initialement des filtres que l’on souhaite indexer, des URLs « ugly » seront créées lors de l’ouverture de celles-ci. Il faut alors ré-écrire ces URLs afin d’obtenir des URLs « propres » (donc sans caractères spéciaux comme des %, ? Ou &).
Exemple: Je cherche un t-shirt noir de la marque Nike
Ces URLs « propres » sont optimisées pour le crawl et l’indexation
La structure d’URL ne doit pas changer selon le chemin suivi par l’internaute.
Exemple: Deux personnes cherchent un t-shirt noir de la marque Nike mais de manière différente.
Il faut donc définir un ordre par défaut, par exemple : [Catégorie d’habit] > [Couleur] > [Marque] et garder cet ordre quel que soit le chemin de l’internaute.
Comme pour une structure de site classique, pour qu’une facette ouverte soit crawlable et indexable, les URLs du site doivent avoir un lien en dur vers la facette ouverte. Ce dernier doit être présents dans le DOM et accessible même si le JavaScript et le CSS sont désactivés
Exemple: j’ai ouvert mes facettes sur les T-shirts Homme + Couleurs
J’ai bien un lien en “dur” T-shirts Homme Bleus depuis ma page T-shirts rouges homme vers ma page T-shirts bleus homme.
Maintenant que nous avons abordé les règles à respecter quant à l’ouverture de facettes, il faut définir un moyen de rendre non crawlable / non indexable les facettes qui ne doivent pas être ouvertes.
Généralement, il est possible de bloquer les facettes non souhaitées de plusieurs manières, chacune d’entre elle ayant ses avantages et inconvénients.
Cette solution permet de limiter le gaspillage de crawl sur les pages non souhaitées ainsi que d’assurer la non indexation des pages fermées (dans le cas où elles seraient connues des moteurs de recherche par d’autres moyens). Cependant, cela ne résout pas les problèmes de dilution de popularité interne car un nombre de liens important non crawlable est présent sur la page.
Ajout d’une meta robots noindex sur les pages fermées
Avec cette approche, seuls les problèmes d’indexation et de contenu dupliqué sont résolus. En effet, le gaspillage de crawl et la dilution de la popularité interne seront toujours présents au sein du site.
Solution assez simple à mettre en place et en bloquant le pattern des facettes fermées au robots.txt. Bien que cette dernière permette de ne pas gaspiller de budget de crawl sur des pages inutiles, elle ne permet pas d’apporter de réelles réponses quant à l’indexation, le contenu dupliqué et la dilution de popularité interne.
L’utilisation du Javascript / Ajax pour bloquer les facettes permet de répondre efficacement à toutes les problématiques. En effet, les liens vers les facettes fermées sont accessibles uniquement pour les utilisateurs et ne sont pas présents dans le code source de la page, ils sont donc inaccessibles pour les robots. A noter que Google exécute le Javascript et qu’une implémentation idéale de cette solution se fait côté client : le filtrage de la page catégorie se fait directement dans le navigateur et aucune nouvelle page n’est créée.
Tout comme l’utilisation du JS / Ajax, cette méthode permet de répondre efficacement à toutes les problématiques. Pour rappel, les requêtes GET permettent de transmettre des informations dans l’URL et sont exécutables par Google. A contrario, pour les requêtes POST, les informations sont incluses dans un formulaire et ne sont pas exécutables par Google.
Le but de la méthode PRG est donc d’utiliser un formulaire en mode POST pour les facettes non désirées afin que Google ne les exécute pas, ce qui donnerait :
Solutions Difficulté de mise en place | NoFollow sur les liens + noindex sur les pages simple | NoIndex sur les facettes fermées simple | Robots.txt simple | Ajax / JS difficile | PRG difficile |
---|---|---|---|---|---|
Règle les problèmes de Contenu Dupliqué | Oui réduit la quantité de contenu dupliqué dans l’index | Oui réduit la quantité de contenu dupliqué dans l’index | Moyen Même si les pages sont bloquées, elles peuvent être indexées | Oui les contenus non souhaités ne sont pas accessibles aux moteurs | Oui les contenus non souhaités ne sont pas accessibles aux moteurs |
Règle les problèmes de Budget Crawl | Oui indique aux moteurs quels sont les liens à ne pas suivre | Non les moteurs perdent du temps à crawler des liens non indexables | Oui indique aux moteurs quels sont les liens à ne pas suivre | Oui Pas de liens en “dur” dans le code | Oui Pas de liens en “dur” dans le code |
Règle les problèmes d’Indexation | Oui aucune page n’est indexée par les moteurs | Oui aucune page n’est indexée par les moteurs | Moyen Même si les pages sont bloquées elles peuvent être indexées | Oui les contenus non souhaités ne sont pas accessibles aux moteurs | Oui les contenus non souhaités ne sont pas accessibles aux moteurs |
Règle les problèmes de “Dilution de Popularité interne” | Non Un nombre important de liens présents dans le code sont non suivis | Non Un nombre important de liens non indexables présents dans le code sont crawlés | Non Un nombre important de liens présents dans le code sont non crawlables | Oui Pas de liens en “dur” dans le code | Oui Pas de liens en “dur” dans le code |