SEO PrestaShop : Guide technique URLs, Schema, Sitemaps & Core Web Vitals
Guide SEO technique pour PrestaShop — URLs simplifiées, canonical, hreflang, données structurées, sitemaps XML, Core Web Vitals et indexation.
Le SEO dans PrestaShop : de la configuration, pas de la magie
La plupart des boutiques PrestaShop laissent 30 à 50 % de leur potentiel de trafic organique inexploité — non pas par manque de contenu, mais à cause d’URLs mal configurées, de balises canoniques manquantes, de données structurées cassées et de gaspillage de budget de crawl. Ceci est un guide technique avec les chemins exacts des paramètres, les tables de la base de données et les extraits de code pour chaque recommandation.
Une boutique avec 10 000 produits et un SEO technique bien configuré surpassera un concurrent avec 50 000 produits et un amas d’URLs dupliquées. Il s’agit d’éliminer les obstacles, pas de recourir à des astuces.
Structure des URLs et URLs simplifiées
Rendez-vous dans Paramètres de la boutique → Trafic & SEO → SEO & URLs et activez URL simplifiée. Cela réécrit les URLs de index.php?id_product=42 vers /mens-leather-wallet-42.html. Sous Apache, PrestaShop génère le fichier .htaccess automatiquement. Sous Nginx, vous devez configurer les règles de réécriture manuellement.
Après l’activation, cliquez sur Générer le fichier .htaccess. Si votre boutique se trouve dans un sous-répertoire, vérifiez que le RewriteBase correspond à votre chemin.
Supprimer les IDs des URLs (PS 8+)
Dans Paramètres de la boutique → Trafic & SEO, trouvez Route vers les produits et Route vers les catégories :
# Default (with ID)
{category:/}{id}-{rewrite}.html
# Clean URL (no ID) — PS 8+
{category:/}{rewrite}.html
La suppression des IDs produit des URLs plus propres, mais crée un risque : PrestaShop résout les URLs via ps_product_lang.link_rewrite. Si deux produits partagent le même slug, le premier résultat l’emporte.
Avant de supprimer les IDs, vérifiez les slugs en double :SELECT link_rewrite, id_lang, COUNT(*) as cnt FROM ps_product_lang GROUP BY link_rewrite, id_lang HAVING cnt > 1;
Corrigez tous les doublons d’abord, sinon certains produits deviendront inaccessibles.
Bonnes pratiques pour les URLs
- Barres obliques finales : Les catégories se terminent par
/, les produits par.html. La cohérence au sein de chaque type est importante — si/shoeset/shoes/renvoient tous deux un code 200, vous avez du contenu dupliqué. Imposez un seul modèle avec une redirection 301. - Gardez des slugs courts : 3 à 5 mots.
/mens-leather-wallet.htmlest préférable à/mens-genuine-italian-leather-bifold-wallet-brown.html. - Tirets, pas underscores : Google traite les tirets comme des séparateurs de mots. PrestaShop fait cela par défaut.
- Ne changez jamais des URLs en production sans redirections : Utilisez la page SEO & URLs pour ajouter des redirections 301 pour les anciennes URLs.
Balises méta et titres
Chaque page dans PrestaShop peut avoir un titre méta et une description personnalisés. Les données sont stockées par langue dans les tables _lang :
# Products: ps_product_lang → meta_title, meta_description, link_rewrite
# Categories: ps_category_lang → meta_title, meta_description, link_rewrite
# CMS pages: ps_cms_lang → meta_title, meta_description, link_rewrite
# Static pages: ps_meta_lang → title, description, url_rewrite
Si un produit n’a pas de titre méta personnalisé, PrestaShop utilise par défaut le nom du produit — « Classic T-Shirt » donne <title>Classic T-Shirt</title>, sans la marque ni le nom de la boutique.
Modèles de titres méta
Google affiche environ 50 à 60 caractères. Placez les mots importants en premier, le nom de la boutique en dernier :
# Product: Primary Keyword - Key Feature | Store Name
# Category: Category Name - Differentiator | Store Name
# CMS: Page Topic - Store Name
Méta description
Les méta descriptions n’affectent pas directement le classement, mais influencent fortement le taux de clics. Google affiche environ 155 caractères sur ordinateur, environ 120 sur mobile. Incluez un appel à l’action, mentionnez le prix ou la disponibilité, et évitez les doublons entre les produits.
Si vous avez des milliers de produits et ne pouvez pas rédiger des méta descriptions individuelles, laissez-les vides plutôt que de les remplir avec du texte générique. Google générera automatiquement un extrait à partir du contenu de la page, ce qui est généralement plus pertinent qu’un texte standard.
Mises à jour en masse des méta données
Pour les catalogues volumineux, utilisez SQL pour définir des titres méta basés sur des modèles. Joignez ps_product_lang avec ps_category_lang sur la catégorie par défaut et utilisez CONCAT() pour combiner le nom du produit avec le nom de la catégorie. Faites toujours un SELECT d’abord pour prévisualiser, et sauvegardez toujours avant les mises à jour massives.
URLs canoniques
PrestaShop génère automatiquement les balises canoniques via le fichier head.tpl du thème. Les produits pointent vers l’URL de base du produit, les catégories vers la base sans filtres. Cela gère les doublons courants, mais plusieurs problèmes subsistent :
- Pagination :
/wallets/?page=2et/wallets/?page=3sont indexables par défaut. Chaque page paginée devrait avoir une canonique auto-référente. Utiliseznoindexsur les pages profondes si vous ne souhaitez pas qu’elles soient classées individuellement. - Tri :
?order=product.price.asccrée des doublons indexables. Bloquez-les avec robots.txt ou noindex. - Navigation à facettes : Les paramètres de filtres créent une explosion combinatoire. Bloquez les URLs de filtres dans robots.txt ET ajoutez noindex aux pages filtrées.
- Produit dans plusieurs catégories : PrestaShop canonicalise vers la catégorie par défaut — c’est le comportement correct.
Google a abandonné rel="prev"/rel="next" en 2019. Concentrez-vous sur les balises canoniques et noindex pour le contrôle de la pagination.
Canoniques en multiboutique
Chaque boutique devrait canonicaliser vers son propre domaine — jamais en cross-domain sauf si une boutique est intentionnellement subordonnée. PrestaShop gère cela correctement lorsque les boutiques ont des domaines séparés. Consultez notre guide multiboutique pour plus de détails.
Hreflang pour les boutiques multilingues
Si votre boutique propose plusieurs langues, hreflang indique à Google quelle version afficher dans chaque marché. Sans ces balises, Google choisit une version et supprime les autres.
<link rel="alternate" hreflang="en" href="https://shop.com/en/wallet.html">
<link rel="alternate" hreflang="fr" href="https://shop.com/fr/portefeuille.html">
<link rel="alternate" hreflang="x-default" href="https://shop.com/en/wallet.html">
Utilisez des codes langue-pays (en-GB, en-US) lorsque vous avez des prix ou du contenu spécifiques à une région. Utilisez des codes langue seuls (en, fr) dans le cas contraire. Incluez toujours x-default pour la version de secours.
Erreurs courantes avec hreflang
- Balises de retour manquantes : La page A pointe vers B, mais B ne pointe pas en retour vers A. Google ignore les deux.
- Codes erronés :
en-UKest incorrect (correct :en-GB). Utilisez ISO 639-1 pour la langue, ISO 3166-1 Alpha 2 pour le pays. - Hreflang sur des URLs non canoniques : Si une page a une canonique pointant ailleurs, son hreflang est ignoré.
- Hreflang avec noindex : Les pages noindexées ne peuvent pas être des cibles hreflang.
Vérifiez avec le validateur hreflang de TechnicalSEO.com. Une seule balise de retour cassée invalide l’ensemble du cluster pour cette page.
Pour le multiboutique avec des domaines séparés par langue, le hreflang cross-domain nécessite de modifier head.tpl pour interroger ps_shop_url et construire les URLs par boutique — le comportement par défaut ne couvre que les langues au sein d’une même boutique.
Données structurées / Schema.org
Les données structurées activent les résultats enrichis — notes en étoiles, badges de prix, indicateurs de disponibilité dans les résultats de recherche. Les thèmes PrestaShop incluent un schéma Product basique, mais il est souvent incomplet.
Schéma Product
Chaque page produit doit disposer d’un schéma Product + Offer complet. Les champs minimum requis par Google pour les résultats enrichis : name, image, price, priceCurrency, availability. S’il en manque un seul, les résultats enrichis ne se déclencheront pas. Incluez sku, brand et aggregateRating lorsqu’ils sont disponibles.
Dans les thèmes classiques, le schéma produit se trouve dans templates/catalog/product.tpl ou un partial comme _partials/microdata/product-jsonld.tpl. Dans Hummingbird (PS 8+/9.x), vérifiez templates/catalog/_partials/product-details.tpl. Les implémentations varient selon le thème.
Schémas BreadcrumbList et Organization
Le fil d’Ariane dans les résultats de recherche montre la hiérarchie du site. Le module de fil d’Ariane de PrestaShop devrait produire automatiquement un JSON-LD BreadcrumbList — vérifiez avec le test des résultats enrichis. Ajoutez un schéma Organization sur l’ensemble du site via le hook displayHeader avec le nom de votre entreprise, l’URL du logo, les informations de contact et les liens vers les réseaux sociaux.
Schéma FAQ et JSON-LD personnalisé
Les pages CMS avec du contenu de type questions-réponses peuvent utiliser le schéma FAQPage pour des extraits étendus. Pour tout type de schéma non couvert par votre thème, injectez du JSON-LD via le hook displayHeader : détectez le type de contrôleur, construisez le tableau de schéma et affichez-le avec json_encode() encapsulé dans une balise <script type="application/ld+json">.
Validez toujours les données structurées avec le test des résultats enrichis de Google. Un schéma incomplet est pire que pas de schéma du tout — cela signale une qualité médiocre.
Sitemap XML
PrestaShop est livré avec le module Google Sitemap (gsitemap). Configurez-le dans Modules → Gestionnaire de modules. Incluez les produits, les catégories et les pages CMS. Excluez les fournisseurs sauf s’ils ont une valeur pour les clients. Le module génère un fichier sitemap.xml à la racine, découpé en plusieurs fichiers pour les catalogues volumineux.
Automatisez la régénération avec un cron quotidien appelant modules/gsitemap/gsitemap-cron.php avec votre clé sécurisée. Soumettez à Google Search Console et surveillez le rapport de couverture. En multiboutique, chaque boutique obtient automatiquement son propre sitemap avec le domaine correspondant.
Un sitemap est une suggestion, pas une garantie. N’incluez que des URLs canoniques et indexables que vous souhaitez réellement voir classées. Pas de produits désactivés, pas de pages filtrées, pas d’URLs de panier ou de commande.
Robots.txt
Générez le fichier robots.txt depuis Paramètres de la boutique → Trafic & SEO → Génération du fichier robots. La configuration par défaut bloque les répertoires d’administration mais omet des patterns importants. Ajoutez ceux-ci en plus des règles par défaut :
# Block shopping flow (no SEO value)
Disallow: /cart
Disallow: /order
Disallow: /my-account
Disallow: /search
# Block filtered/sorted duplicates (crawl budget killers)
Disallow: /*?order=
Disallow: /*?q=
Disallow: /*&order=
Disallow: /*&q=
Sitemap: https://your-domain.com/sitemap.xml
Bloquer les paramètres de filtres empêche l’exploration de pages dupliquées combinatoires, économisant ainsi le budget de crawl pour les vraies pages de produits et de catégories.
Le fichier robots.txt bloque l’exploration, pas l’indexation. Si un site externe crée un lien vers une URL bloquée, Google peut toujours l’indexer sans l’explorer. Pour une véritable désindexation, utilisez les balises métanoindexou les en-têtesX-Robots-Tag.
SEO des images
Les images de produits génèrent un trafic significatif via Google Images. PrestaShop génère automatiquement les balises alt à partir du nom du produit et réécrit les noms de fichiers en fonction de link_rewrite. Configurez le modèle de texte alt dans Paramètres de la boutique → Trafic & SEO — envisagez d’ajouter la catégorie ou la marque au pattern par défaut.
Formats modernes : PS 8+ supporte le WebP, PS 9.x ajoute l’AVIF. Activez dans Apparence → Paramètres des images, réglez la qualité sur 80-85, et regénérez les miniatures. Chargement différé : les thèmes modernes ajoutent loading="lazy" sous la ligne de flottaison. Ne chargez jamais en lazy l’image principale du produit — c’est votre élément LCP. Sitemap des images : le module gsitemap peut inclure les images de produits pour aider Google à découvrir les images non trouvées lors de l’exploration classique.
Core Web Vitals
Les Core Web Vitals sont un facteur de classement confirmé. PrestaShop présente des patterns spécifiques qui provoquent des échecs.
CLS (Cumulative Layout Shift) — Objectif : inférieur à 0,1
Causes courantes dans PrestaShop : images sans attributs width/height, polices web provoquant un FOUT (corrigez avec font-display: swap + preload), bannières chargées par JS qui poussent le contenu vers le bas (corrigez avec un min-height CSS), et barres de consentement aux cookies insérées dans le flux du document au lieu d’utiliser un positionnement fixed/sticky.
LCP (Largest Contentful Paint) — Objectif : inférieur à 2,5s
Sur les pages produit, le LCP est l’image principale du produit. Compressez agressivement, utilisez WebP/AVIF, et préchargez avec <link rel="preload" as="image" fetchpriority="high">. Ne chargez jamais l’image LCP en lazy. Si le TTFB du serveur dépasse 1,5s, aucune astuce frontend ne vous sauvera — consultez notre guide de performance.
INP (Interaction to Next Paint) — Objectif : inférieur à 200ms
Chaque module accroché à displayHeader/displayFooter ajoute du JS qui bloque le thread principal. Les scripts tiers (analytics, chat, pixels) devraient être chargés avec defer/async ou via Tag Manager. Mesurez les données terrain des CWV dans PageSpeed Insights — si l’INP terrain est mauvais mais le labo est correct, les scripts tiers en sont probablement la cause.
Vitesse de page pour le SEO
Pour un approfondissement sur l’optimisation serveur, la mise en cache et l’infrastructure, consultez notre guide d’optimisation des performances. Voici les facteurs de vitesse critiques pour le SEO :
CCC (Combiner, Compresser, Mettre en cache)
Activez toutes les options dans Paramètres avancés → Performances. Le CCC réduit les requêtes HTTP de 20-40 à 3-5 pour le CSS/JS, économisant souvent 1 à 2 secondes lors de la première visite.
Chargement des polices
Hébergez vos polices vous-même (élimine la recherche DNS vers fonts.googleapis.com), utilisez font-display: swap, préchargez la police principale du corps avec <link rel="preload" as="font" type="font/woff2" crossorigin>, et créez des sous-ensembles pour supprimer les plages de caractères inutilisées.
Stratégie JS des modules
Les modules devraient enregistrer le JS avec 'attributes' => 'defer' dans leurs appels registerJavascript(). Le JS avec defer/async reste séparé des bundles CCC (par conception) mais ne bloque pas le rendu. Vérifiez le code des modules qui utilisent la position bottom sans defer.
Maillage interne
Votre structure de catégories EST votre architecture de maillage interne. Chaque page de catégorie est une page potentielle de classement pour un cluster de mots-clés.
Hiérarchie des catégories
Structurez les catégories pour correspondre à l’intention de recherche : « Chaussures » cible le terme générique, « Chaussures de course pour hommes » cible la longue traîne. Une catégorie plate avec 1 000 produits gâche l’opportunité de se classer sur des dizaines de mots-clés spécifiques. L’arborescence des catégories de PrestaShop crée automatiquement une hiérarchie de liens via le fil d’Ariane et les menus de navigation.
Fil d’Ariane
Assurez-vous que le fil d’Ariane apparaît sur chaque type de page. Lorsqu’un produit existe dans plusieurs catégories, PrestaShop utilise la catégorie par défaut pour le chemin du fil d’Ariane. Définissez la catégorie par défaut de chaque produit comme sa catégorie pertinente la plus spécifique.
Ventes croisées
Les accessoires et produits associés créent des liens internes entre les pages produit — distribuant le link equity tout en augmentant le panier moyen. Configurez dans Catalogue → Produits → Produits associés. Ne laissez pas les pages CMS devenir orphelines — liez les guides de tailles et les politiques de livraison depuis les descriptions de produits pertinentes.
Contrôle de l’indexation
Toutes les pages ne doivent pas être indexées. Permettre à Google d’indexer des milliers d’URLs filtrées dilue le budget de crawl.
Navigation à facettes
Une catégorie avec 5 couleurs, 8 tailles et 4 tranches de prix génère 160 URLs filtrées — par catégorie. Multipliez par 100 catégories et vous obtenez 16 000 pages quasi dupliquées. La solution :
- Bloquez les paramètres de filtres dans robots.txt (empêche l’exploration)
- Ajoutez
noindexaux pages filtrées (empêche l’indexation si elles sont explorées) - Canonicalisez les pages filtrées vers la catégorie de base (consolide les signaux)
Exception : les combinaisons de filtres correspondant à de vraies requêtes de recherche (« portefeuilles en cuir noir ») devraient être indexées avec des méta données uniques. Bloquez tout le reste.
Stratégie de pagination
- Canoniques auto-référentes sur chaque page paginée.
- Noindex sur les pages profondes : Les pages 4 et au-delà ont rarement une valeur SEO. Gardez-les suivables pour que Google découvre les produits liés.
- Augmentez le nombre de produits par page : Afficher 48 au lieu de 12 produits par page réduit la pagination de 17 pages à 5, concentrant ainsi le link equity.
Erreurs SEO courantes dans PrestaShop
Page d’accueil dupliquée
La page d’accueil est souvent accessible via /, /index.php, /en/ et /en/index.php. Redirigez index.php vers la racine avec une 301 :
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ / [R=301,L]
Normalisation WWW et HTTPS
Choisissez www ou non-www, choisissez HTTPS. Redirigez tout le reste avec une seule 301 sans chaîne. Le paramètre « Activer SSL » de PrestaShop n’affecte que la génération de liens — vous devez ajouter des redirections au niveau serveur dans le .htaccess. L’ordre compte : forcez le HTTPS d’abord, puis la normalisation www. Vérifiez les chaînes de redirection avec curl -I -L — chaque saut supplémentaire ajoute de la latence et fait fuir le link equity.
Autres problèmes fréquents
- Doublons de page 1 des catégories :
/shoes/et/shoes/?page=1renvoient tous deux un code 200. Redirigez?page=1vers l’URL de base. - Descriptions de produits copiées : Si vous importez les descriptions du fournisseur, tout le monde le fait aussi. Rédigez des descriptions uniques pour au moins vos 20 % de produits les plus rentables.
- Catégories vides : Les catégories actives avec zéro produit constituent du contenu pauvre. Interrogez
ps_categoryavec une jointureCOUNTsurps_category_productpour les trouver et les passer en noindex ou les supprimer. - Titres méta manquants : Interrogez
ps_product_langpour les lignes oùmeta_titleest vide — ces produits utilisent le simple nom du produit comme balise title.
Checklist d’audit SEO
Passez en revue cette liste chaque trimestre, ou après tout changement majeur de la boutique.
Fondations techniques
- URLs simplifiées activées — aucune URL
index.php?id_product=dans Google. - SSL activé et forcé — toutes les redirections HTTP 301 vers HTTPS.
- Normalisation WWW — redirection en un seul saut, sans chaîne.
- Robots.txt bloque l’administration, le panier, la commande, la recherche et les paramètres de filtres.
- Sitemap XML généré, à jour, soumis à la Search Console.
On-Page
- Titres méta uniques pour chaque produit et catégorie, de moins de 60 caractères.
- Méta descriptions uniques ou intentionnellement vides — pas de doublons génériques.
- Un seul H1 par page, correspondant au sujet de la page.
- Toutes les images de produits ont un texte alt descriptif.
- Balises canoniques présentes sur chaque page, correctes avec la pagination.
- Balises hreflang correctes si multilingue : bidirectionnelles, x-default présent.
Données structurées
- Schéma Product validé dans le test des résultats enrichis avec name, image, price, availability.
- Schéma BreadcrumbList présent sur les pages produit et catégorie.
- Schéma Organization présent sur l’ensemble du site.
Explorabilité
- Rapport de couverture Google Search Console — aucune erreur inattendue ni page exclue.
- Les URLs filtrées n’explosent pas dans l’index de Google.
- Aucune catégorie vide indexée.
- Pas de soft 404 (produits en rupture de stock renvoyant un code 200 avec un contenu vide).
Performance
- Core Web Vitals validés dans les données terrain (Search Console → Core Web Vitals).
- Aucune erreur d’ergonomie mobile.
- Pages produit en moins de 3s de temps de chargement. Consultez notre guide de performance.
Outils recommandés
Google Search Console (indexation, CWV, performance), Screaming Frog (exploration de site, gratuit jusqu’à 500 URLs), PageSpeed Insights (données CWV labo + terrain), test des résultats enrichis (validation des données structurées), Ahrefs Webmaster Tools (audit technique gratuit + backlinks).
Le SEO n’est pas une opération « configurer et oublier ». Les mises à jour de thème cassent les schémas, les nouveaux modules ajoutent des boucles de redirection, les imports créent des méta données dupliquées. Une vérification trimestrielle de 30 minutes détecte les problèmes avant qu’ils ne vous coûtent du trafic.
More guides available
Browse our knowledge base for more practical PrestaShop tutorials, or reach out if you need help.