URLs canoniques PrestaShop : éviter le contenu dupliqué et consolider les signaux SEO

Niveau de lectureTechnique
CMS / OutilPrestaShop
Temps de lecture10 min

Un catalogue PrestaShop de quelques centaines de références peut générer des dizaines de milliers d’URLs quasi identiques, entre tris, filtres et pagination. La balise canonical est la réponse la plus connue, mais elle est souvent posée à côté de deux autres techniques (noindex, blocage robots.txt) qui, cumulées, peuvent l’annuler purement et simplement. Voici comment PrestaShop gère nativement le canonical selon votre version, et pourquoi le cumul des trois techniques recommandées par la majorité des guides se retourne parfois contre vous.

Pourquoi PrestaShop génère naturellement du contenu dupliqué

Ce n’est pas un défaut de configuration, c’est le fonctionnement normal du moteur. PrestaShop construit des URLs à partir de paramètres, et chaque paramètre ajouté crée une variante techniquement distincte d’une page dont le contenu reste, pour Google, quasiment identique. Cinq sources reviennent systématiquement sur un catalogue actif.

Source Exemple Contenu réellement différent ?
Tri et pagination ?order=product.price.asc, ?page=2 Non, même liste de produits réordonnée
Recherche interne ?q=recherche Non, contenu généré à la volée
Produit multi-catégories /chaussures/basket-x et /promotions/basket-x Non, fiche produit identique
Filtres à facettes ?couleur=noir&taille=42 Rarement, sauf combinaison à fort volume de recherche
Protocole / sous-domaine http vs https, www vs sans www Non, page strictement identique

Chacune de ces sources, prise isolément, semble anodine. Le problème apparaît à l’échelle : un catalogue de 200 produits avec 5 attributs filtrables peut dépasser 10 000 URLs au contenu quasi identique. Google doit alors choisir lui-même quelle version afficher, l’autorité du produit se dilue entre les variantes plutôt que de se concentrer sur une seule, et le budget de crawl part sur des pages qui n’apportent rien.

Comment fonctionne la balise canonical selon votre version de PrestaShop

La bonne nouvelle : PrestaShop gère la canonicalisation nativement, mais différemment selon la génération du moteur. Vérifier ce point avant toute autre action évite de corriger un problème qui n’existe pas, ou d’ignorer une case à cocher qui suffirait.

PrestaShop 1.6 : une balise à construire dans le thème

Sur 1.6, la balise canonical n’est pas automatique : elle doit être posée dans header.tpl, entre les balises <head>, en s’appuyant sur les méthodes natives du thème ({$link->getProductLink($product)} pour une fiche produit, {$link->getCategoryLink($category)} pour une catégorie) plutôt que sur une reconstruction manuelle de l’URL courante, qui laisserait passer les paramètres de tri et de recherche.

PrestaShop 1.7 et 8.x : un mécanisme natif, à vérifier plutôt qu’à recréer

À partir de 1.7, le canonical repose sur la variable Smarty {$urls.canonical_url}, injectée automatiquement dans templates/_partials/head.tpl des thèmes basés sur Classic. La tâche n’est donc plus d’ajouter du code, mais de vérifier que ce bloc n’a pas été supprimé ou commenté lors d’une personnalisation de thème, ce qui arrive fréquemment sur les thèmes premium retravaillés par une agence tierce.

Le cas particulier de la pagination

Deux logiques coexistent selon que le contenu des pages paginées diffère réellement ou non. Si la page 2 d’une catégorie affiche des produits différents de la page 1, chaque page paginée doit conserver sa propre URL canonique (auto-référente). Si en revanche la pagination ne sert qu’à naviguer dans une liste identique triée différemment, une canonical unique vers la première page suffit à consolider le signal.

Les filtres (couleur, taille, prix, marque) sont, de loin, la source qui produit le plus de volume. Une étude Baymard citée par plusieurs consultants indique que 76 % des utilisateurs e-commerce s’en servent, ce qui exclut de simplement les supprimer. Le problème n’est pas la fonctionnalité, c’est son exploration incontrôlée par Googlebot.

Le volume réel sur un catalogue courant

Avec 5 attributs filtrables combinables librement, un catalogue de 200 produits peut dépasser 10 000 URLs distinctes pour Google, la quasi-totalité sans intérêt de recherche propre. Deux traitements différents s’imposent selon la valeur de la combinaison.

Les deux tactiques recommandées par le marché

Pour l’immense majorité des combinaisons, sans volume de recherche identifiable, la pratique courante combine une balise canonical pointant vers la page catégorie parente et un noindex, follow sur la page filtrée elle-même, le follow préservant la remontée du maillage interne. Pour une minorité de combinaisons à fort volume de recherche identifié (« chaussures running homme rouge », par exemple), la recommandation inverse s’applique : créer une URL statique dédiée, avec un contenu et un H1 propres, plutôt que de la bloquer.

Pourquoi cumuler canonical, noindex et robots.txt peut se retourner contre vous

C’est le point que la plupart des guides PrestaShop, y compris ceux qui détaillent le mieux la navigation à facettes, ne relèvent jamais : ils recommandent souvent de cumuler les trois techniques (canonical, noindex, et blocage des paramètres dans le robots.txt) comme une protection renforcée. La documentation officielle de Google sur la consolidation des URLs dupliquées dit explicitement le contraire sur deux de ces trois points, et l’ignorer peut rendre votre configuration inopérante sans que rien ne le signale dans le back-office.

Ce que dit vraiment Google sur la consolidation des signaux

Google distingue deux objectifs qu’on confond trop souvent : consolider l’autorité d’une page vers une autre, ou simplement la retirer de l’index. La balise canonical fait le premier : elle indique à Google de transférer les signaux (liens, autorité) de la page dupliquée vers l’URL préférée. Le noindex ne fait pas ça : il retire la page de l’index, mais les signaux qu’elle avait accumulés (un lien externe pointant dessus, par exemple) ne sont PAS reversés vers la page canonique. Google le formule sans ambiguïté dans sa documentation officielle sur la gestion des doublons : le noindex n’est pas recommandé comme méthode de résolution des doublons internes, précisément parce qu’il ne consolide rien.

Le blocage via robots.txt aggrave le problème d’une autre façon : Googlebot ne peut tout simplement plus lire la page bloquée, donc ne peut plus y voir ni la balise canonical, ni la balise noindex que vous y avez posée. La page peut malgré tout apparaître dans les résultats (sans extrait, juste l’URL) si des liens externes ou internes continuent d’y pointer. Google le dit explicitement : le robots.txt n’est pas une méthode de canonicalisation fiable, « les pages peuvent s’indexer quand même ».

Ce que ça change concrètementSur PrestaShop, si vous posez une canonical vers la catégorie parente ET un noindex ET un blocage robots.txt sur les mêmes URLs de filtres, le blocage robots.txt empêche Googlebot de voir les deux autres signaux que vous venez de poser. Le résultat dépend alors des liens externes existants, pas de votre configuration.

Le bon choix selon votre objectif

La règle qui découle de cette documentation est plus simple qu’elle n’y paraît, à condition de choisir un seul objectif par groupe d’URLs :

  • Vous voulez transférer l’autorité vers la page catégoriePosez uniquement la balise canonical, laissez les URLs de filtres crawlables (pas de robots.txt, pas de noindex). C’est le choix par défaut pour la majorité des combinaisons de filtres sans volume propre.
  • Vous voulez simplement empêcher l’indexation, sans transfert de signalPosez un noindex, follow, et laissez la page crawlable (toujours pas de robots.txt). Le follow continue à faire remonter le maillage interne vers vos pages stratégiques.
  • Vous voulez économiser du budget de crawl sur un très gros catalogueRéservez le robots.txt aux paramètres dont vous êtes certain qu’aucun lien externe ne pointe dessus (paramètres de session, de tri technique), jamais aux URLs de filtres à combinaisons multiples qui peuvent avoir été partagées ou indexées par le passé.
  • Vérifier que vos canonicals fonctionnent réellement

    Une configuration correcte dans le thème ne garantit pas qu’elle produit l’effet attendu en ligne, surtout après une mise à jour PrestaShop ou une personnalisation de thème par une agence tierce.

    Le contrôle manuel, page par page

    Ouvrez le code source de la page (Ctrl+U), cherchez <link rel="canonical"> dans le <head>, et vérifiez que l’URL indiquée ne contient aucun paramètre parasite (tri, filtre, identifiant de session). L’inspection d’URL de Search Console donne une deuxième lecture, celle que Google a effectivement retenue, qui ne correspond pas toujours à ce que votre balise déclare.

    Le contrôle à l’échelle, avec un crawler

    Sur un catalogue de plus de quelques dizaines de références, le contrôle page par page ne tient pas. Un crawl complet (Screaming Frog ou équivalent) permet de cartographier, en une passe, toutes les URLs canoniques déclarées et de repérer les incohérences : canonical vers une page qui redirige elle-même, canonical absente sur des fiches produit, ou canonical identique sur des pages qui ne devraient pas l’être.

    Cas particuliers à ne pas rater

    Un produit présent dans plusieurs catégories

    Sur PrestaShop, un même produit peut être rattaché à plusieurs catégories, chacune générant sa propre URL d’accès au produit. Sans intervention, Google reçoit plusieurs chemins vers la même fiche et doit arbitrer seul. Les méthodes natives du thème (getProductLink) résolvent en principe ce cas en pointant systématiquement vers une URL de référence unique, mais une thème fortement personnalisé peut casser ce comportement sans avertissement visible côté back-office : c’est un point à vérifier explicitement après toute refonte de template.

    HTTP vs HTTPS, www vs sans www

    Ces variantes de domaine doivent être tranchées une bonne fois par redirection 301 côté serveur (.htaccess), pas par la seule balise canonical. Google indique lui-même préférer HTTPS par défaut, sauf certificat SSL invalide ou redirection incohérente vers HTTP : un site qui sert encore ses deux protocoles sans redirection laisse cette décision à l’algorithme plutôt qu’à l’administrateur du site.

    Faut-il combiner canonical, noindex et robots.txt sur les pages de filtres PrestaShop ?

    Non, ces trois techniques répondent à des objectifs différents et se neutralisent en partie si elles sont cumulées sur les mêmes URLs. Choisissez la canonical pour transférer l’autorité, le noindex pour simplement retirer une page sans transfert, ou le robots.txt pour économiser du budget de crawl sur des paramètres sans enjeu de lien externe, jamais les trois à la fois sur un même groupe d’URLs.

    PrestaShop 1.7 et 8.x posent-ils la balise canonical automatiquement ?

    Oui, via la variable Smarty {$urls.canonical_url} intégrée nativement aux thèmes basés sur Classic. Une personnalisation de thème peut toutefois supprimer ce bloc sans le signaler ailleurs, d’où l’intérêt de le vérifier après chaque changement de thème.

    Quelle est la différence entre une redirection 301 et une balise canonical ?

    La redirection 301 fait disparaître l’ancienne URL, le visiteur et Googlebot sont renvoyés directement vers la nouvelle. La balise canonical laisse les deux URLs accessibles, mais indique à Google laquelle doit faire autorité dans les résultats de recherche.

    Comment savoir si mes filtres PrestaShop créent vraiment du contenu dupliqué ?

    Un crawl complet du site (Screaming Frog ou équivalent) associé à l’onglet Couverture de Search Console permet de comparer le nombre d’URLs générées par les combinaisons de filtres et le nombre de pages réellement indexées avec un contenu jugé similaire par Google.

    Faut-il indexer certaines pages de filtres PrestaShop ?

    Oui, à la marge : une combinaison de filtres qui correspond à une vraie intention de recherche (volume mensuel identifiable) mérite une URL statique dédiée avec un contenu et un H1 propres, plutôt qu’un blocage systématique qui la priverait de tout trafic organique.

    Ce qu’il faut retenir

    La balise canonical ne se pose pas en complément systématique du noindex et du robots.txt, elle se choisit à leur place selon ce que vous cherchez à obtenir : transférer un signal, ou simplement retirer une page. Sur un catalogue PrestaShop, cette décision se prend groupe d’URLs par groupe d’URLs, jamais globalement, et se vérifie ensuite sur le site en ligne, pas seulement dans la configuration du thème. C’est un travail qui gagne à s’inscrire dans la durée plutôt qu’en correction ponctuelle, tant les mises à jour de thème et de modules peuvent silencieusement revenir dessus.

    À propos de l’auteur

    Aymeric Maingé

    Consultant SEO senior avec plus de 10 ans d’expérience, côté agence et annonceur. J’accompagne des boutiques PrestaShop sur des problématiques de SEO technique, d’architecture de catalogue, d’indexation et de performance web. Mon approche croise audit terrain, priorisation métier et recommandations actionnables pour les équipes marketing et IT. Votre consultant SEO Prestashop peut auditer vos canonicals, vos filtres et votre budget de crawl en une seule intervention.

    À lire aussi

    Les autres articles sur le sujet

    Aymeric Maingé consultant SEO freelance