URL canonique PrestaShop : éviter le contenu dupliqué et protéger son SEO
Implémentez les URLs canoniques sur PrestaShop pour éliminer le contenu dupliqué, consolider votre autorité SEO et stabiliser vos positions Google.
En bref : Une chute de positionnement Google sur PrestaShop est souvent causée par du contenu dupliqué interne. L'implémentation correcte des URLs canoniques, combinée à une configuration serveur propre et une bonne UX, permet de consolider l'autorité SEO et de stabiliser durablement vos positions.
Pourquoi vos positions Google chutent sans raison apparente
Vous avez optimisé vos fiches produits, travaillé vos mots-clés, et pourtant vos positions reculent. Le coupable le plus fréquent — et le plus sous-estimé — est le contenu dupliqué interne généré par PrestaShop lui-même.
PrestaShop produit naturellement plusieurs URLs pour un même contenu : paramètres de tri, de pagination, de filtres, identifiants de catégorie dans les URLs produit… Google indexe alors plusieurs versions de la même page, dilue le "link juice" entre ces variantes, et finit par déclasser l'ensemble.
La solution : la balise canonical (), qui indique explicitement à Google quelle URL fait autorité pour chaque page.
Comprendre le problème de duplication sur PrestaShop
Les sources courantes de duplication
PrestaShop génère du contenu dupliqué de plusieurs façons :
- **Paramètres GET** : `?order=product.price.asc`, `?page=2`, `?q=recherche`
- **URLs multi-catégories** : un produit accessible via `/chaussures/basket-nike` et `/promotions/basket-nike`
- **Versions avec/sans slash final** : `/ma-categorie` vs `/ma-categorie/`
- **HTTP vs HTTPS** et **www vs non-www** (à traiter aussi côté `.htaccess`)
- **Pages de filtres** : la navigation à facettes crée des combinaisons exponentielles d'URLs
L'impact SEO réel
Quand Google détecte du contenu dupliqué, il doit choisir lui-même la version "canonique". Ce choix automatique est souvent mauvais :
- La mauvaise URL est indexée (celle avec paramètres)
- Le PageRank est réparti entre les variantes au lieu d'être concentré
- Le crawl budget est gaspillé sur des pages redondantes
- Vos positions deviennent instables, oscillant entre les différentes versions
Implémenter les URLs canoniques sur PrestaShop
Sur PrestaShop 1.6 (Smarty)
Dans le fichier header.tpl de votre thème, ajoutez entre les balises :
{* URL Canonique *}
{if $page_name == 'index'}
<link rel="canonical" href="{$base_dir}" />
{elseif $page_name == 'product'}
<link rel="canonical" href="{$link->getProductLink($product)}" />
{elseif $page_name == 'category'}
<link rel="canonical" href="{$link->getCategoryLink($category)}" />
{else}
<link rel="canonical" href="{$base_dir}{$request_uri|substr:1|regex_replace:'/\?(.*)/' : ''}" />
{/if}
Point important : sur PrestaShop 1.6, préférez {$link->getProductLink($product)} plutôt que de reconstruire l'URL manuellement avec $request_uri. La méthode native de l'objet Link génère l'URL propre du produit, sans paramètres parasites ni identifiant de catégorie superflu.
Sur PrestaShop 1.7 et 8.x
Bonne nouvelle : PrestaShop 1.7+ gère nativement les balises canonical via le composant hreflang et la variable {$urls.canonical_url}. Vérifiez dans votre fichier templates/_partials/head.tpl :
{block name='head_canonical'}
{if isset($urls.canonical_url)}
<link rel="canonical" href="{$urls.canonical_url}" />
{/if}
{/block}
Si ce bloc est absent ou commenté, ajoutez-le. Sur PrestaShop 8.x, ce mécanisme est actif par défaut dans les thèmes basés sur Classic.
Vérification rapide : consultez le code source de n'importe quelle page produit et recherchez rel="canonical". Si la balise est absente ou pointe vers une URL avec des paramètres, il y a un problème.
Cas spécial : la pagination
Pour les pages de catégories paginées, la canonical doit pointer vers la première page uniquement si le contenu est identique. Si chaque page affiche des produits différents, chaque page paginée devrait avoir sa propre canonical :
{* Pour les catégories avec pagination *}
{if $page_name == 'category'}
{if isset($smarty.get.page) && $smarty.get.page > 1}
<link rel="canonical" href="{$link->getCategoryLink($category)}?page={$smarty.get.page|intval}" />
{else}
<link rel="canonical" href="{$link->getCategoryLink($category)}" />
{/if}
{/if}
Au-delà de la canonical : une stratégie SEO complète
La balise canonical seule ne suffit pas. Une chute de positionnement a souvent des causes multiples.
Audit technique complémentaire
- **Vérifiez la Search Console** : l'onglet "Couverture" révèle les pages que Google considère comme dupliquées et celles qu'il a choisies comme canoniques
- **Crawlez votre site** avec Screaming Frog ou Sitebulb pour cartographier toutes les variantes d'URL
- **Testez le `robots.txt`** : assurez-vous de ne pas bloquer les URLs canoniques tout en laissant passer les variantes
- **Taux de rebond élevé** : l'utilisateur revient immédiatement sur Google → signal négatif
- **Temps de session court** : le contenu ne répond pas à l'intention de recherche
- **Navigation confuse** : l'utilisateur ne trouve pas ce qu'il cherche
- [ ] Balise canonical présente et correcte sur toutes les pages
- [ ] Redirection 301 HTTP → HTTPS en place
- [ ] Choix www / non-www forcé et cohérent
- [ ] URLs simplifiées activées dans **Préférences > SEO & URLs**
- [ ] Navigation à facettes contrôlée (noindex ou canonical sur les filtres)
- [ ] Sitemap XML à jour et soumis dans la Search Console
- [ ] Aucune page orpheline indexée (vérifier avec `site:votredomaine.com`)
- [ ] `hreflang` configuré si boutique multilingue
Optimisation UX et signaux comportementaux
Google intègre fortement les signaux utilisateur dans son algorithme. Un site techniquement propre mais avec une mauvaise expérience utilisateur perdra quand même des positions :
Investissez dans des tests utilisateurs réguliers. Observez comment vos visiteurs naviguent réellement sur votre boutique. L'ergonomie et l'UX design sont un travail à part entière qui impacte directement votre référencement.
Configuration `.htaccess` complémentaire
Forcez une seule version de domaine pour éviter la duplication au niveau serveur :
# Forcer HTTPS + www (ou non-www selon votre choix)
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
Checklist SEO anti-duplication PrestaShop
Questions fréquentes
Tout ce que vous devez savoir sur ce sujet.
Un projet PrestaShop ?
Discutons-en directement.
193 projets livrés
Lire sur le blog

Alexandre Carette
Expert PrestaShop & Architecture E-commerce
Développeur PrestaShop depuis 2014, 193 projets livrés. Je conçois des architectures headless Nuxt + PrestaShop et des outils d'automatisation IA pour les e-commerçants.