Nous allons voir dans ce tutoriel comment éviter le duplicate content sur shopify

Légende: url = adresse internet.

Une des problématique majeure sur shopify reste la génération d’un contenu dés que vous allez associer un produit à une collection.

En effet lorsque vous créez un produit, Shopify crée une url de type « /products/nomduproduit ». Dés lors que vous allez associer ce produit à une collection cela va créer automatiquement une autre url de type « /collections/nomdelacollection/nomduproduit ». Cela a pour conséquence de vous créer 2 pages avec le même contenu donc pénalisé par les moteurs de recherche ! C’est ce qu’on appelle du duplicate content interne.

Avant de vous lancer !

Attention ! dans quelques thèmes une balise canonical est présente dans vos fichiers (Layout – theme.liquid).

ce genre la : <link rel= »canonical » href= »{{ canonical_url }} »>

En haut dans les balises head regardez si vous trouvez cette balise:

Si vous l’avez c’est que le thème part du principe logique que les urls de type « /products/nomduproduit » sont les urls principales et que les autres sont des copies de celles-ci à ne pas indexer.

Si vous voulez faire ce tuto je vous conseille de supprimer cette balise 😉

Je vous invite Fortement à tester votre couverture d’indexation à l’aide de  Google Search Console – Index – couverture afin de ne pas faire de bêtises 😉

Comment éviter ce problème ?

Il suffit à l’aide des codes que je vais vous donner de dire aux moteurs de recherche que tel ou tel type d’url ne sera pas indexée !

2 solutions s’offre à vous:

  • Désindexer les urls des produits avec collections.
  • Désindexer l’url  principale du produit (sans collections).

Quelle solution choisir ?

Alors là c’est à vous de voir 🙂

Si vous décidez de désindexer des urls de type collections lors d’une recherche les internautes vont tomber uniquement sur la page de type « /products/nomduproduit », l’url originelle. Il faut savoir que vos produits recommandés présent sur certains thèmes comme Speedfly ne s’affichent que sur les urls de type collection. C’est important de le savoir 😉

Si vous faite le choix de la désindexation de l’url de type products « /collections/nomdelacollection/nomduproduit » vous allez devoir éviter de faire votre pub Facebook ou Adwords sur l’url originelle ! De plus il faudra impérativement que votre produit ne soit associé qu’à une seule collection sinon le duplicate content sera présent sur les autres collections de ce produit.

Et toi tu en pense quoi ?

Personnellement j’aurai tendance à privilégier la solution sans les urls avec collections afin de garder le fonctionnement et url native. Mais aucun des choix n’est mauvais, il suffit simplement de prendre la solution qui vous semble la plus adaptée à votre site.

Côté tutoriels – code shopify

Rendez-vous dans les fichiers de votre thème et trouvez le dossier « Layout » et le fichier « theme.liquid« .

Vous allez devoir trouver la balise head en haut du site et plus spécifiquement la fermeture de celle-ci: </head>

Vous avez donc copier un de ces codes juste AVANT le </head> comme sur cet exemple:

noindex-nofollow-shopify

Code pour supprimer les urls de type:  « /products/nomduproduit ».

{% if template == "product" %} 
{% assign $productUrl = product.url | without: collection %}
{% if productUrl contains 'products' %}
<meta name="robots" content="noindex">  
{% endif %}
{% endif %}

Code pour supprimer les urls de type: « /collections/nomdelacollection/nomduproduit ».

{% if template == "product" %} 
{% assign $productUrl = product.url | within: collection %}
{% if productUrl contains 'collections' %}
<meta name="robots" content="noindex"> 
{% endif %}
{% endif %}

Bonus: Ne pas indexer certaines pages de votre site comme les mentions légales ou conditions générales de vente…

Exemple ici pour une url de type page contenant « conditions-generales-de-vente ».

{% if template == "page" %} 
{% assign $pageUrl = page.url | without: collection %}
{% if pageUrl contains 'conditions-generales-de-vente' %}
<meta name="robots" content="noindex"> 
{% endif %}
{% endif %}

Et le canonical dans tout ça ?

Le canonical est le fait de définir le contenu principal alors que plusieurs versions de ce contenu existe ce qui peut également être une bonne solution mais cela revient à désindexer les urls de type collections et ne garder le référencement que les urls des produits de type: « /products/nomduproduit »

Si cette solution vous convient voici le bout de code à placer au même endroit en remplacement des codes donnés plus haut 😉

<link rel="canonical" href="{{ canonical_url }}">

Bon tuto shopify à vous 😉

Merci de me laisser une petite note 😉
[Note moyenne de: 5 sur 5 votes]

Cet article a 36 commentaires

  1. Pour les url sur Facebook, on peut mettre une redirection avec Shopify ? A moins que ça fait aussi un dublicate content

    1. Bonjour, je suis navré je ne suis pas sur d’avoir compris la question… mais les liens mis sur Facebook doivent idéalement être les urls référencées sur Google afin de Booster le SEO. Bon WE

  2. N’y a t il pas la possibilité de faire plus simple sur speedfly ?

    1. Bonjour, le canonical est automatiquement choisi et appliqué sur speedfly 😉

  3. Bonjour et merci pour ce tuto !

    Cependant, je ne comprends pas bien.. dans le paragraphe « Avant de vous lancer ! » ligne 2: « En haut dans les balises head regardez si vous trouvez cette balise: »
    Quelle est la balise en question ?

    (thème début) J’ai tout de même regardé et après ma balise head (en supposant que c’est ce genre de balise qu’il faut avoir -ou pas-), j’ai:

    Que dois-je faire ? Supprimer cette balise et faire la suite du tuto ?

    Merci d’avance pour votre retour 🙂

    1. Hello, j’ai mis à jour le tuto pour indiquer la balise à rechercher 😉 Bonne soirée

  4. Bonjour j’ai supprimé la balise dans le fichier du template mais rien à faire elle s’affiche toujours dans mes pages produits… Savez-vous à quels autres endroits elle pourrait être ? Merci

    1. Bonjour, comment testez-vous sa présence ? si c’est pas google ca ne sera pas effectif de suite… le temps que google repasse sur le site donc entre 1 semaine et plus d’un mois ou 2 mois selon le trafic. Pour tester je vous conseille sur une de vos page qui doit ou ne doit pas être indexée de faire un ctrl + S et d’ouvrir la source de votre page et de faire un ctrl + F pour recherche la balise souhaitée (no follow ou canonical). Bonne chance 🙂

  5. Bonjour, j’ai dans mon thème mais j’ai tout de même du duplicate content interne, j’ai cru comprendre qu’elle l’empêchait.
    Sinon les urls que j’aimerai seulement indexer sont de type collections/nomcollec/products/nomprod car chez moi le products est tout de même présent, mais cela ne risque t-il pas de tout désindexer si j’applique votre méthode? Et sinon pourquoi conseillez vous l’url native avec juste products (est-elle plus performante? je croyais que c’était le contraire)
    Aussi je voulais savoir si on devait d’abord supprimer temporairement toutes les urls dans la search console avant, ou la suppression est automatique avec votre méthode?
    Enfin j’ai aussi des urls avec des ? et du charabia ensuite comment faire pour les enlever?
    Merci, sinon super tuto 🙂

    1. Bonjour et merci pour le message , je vais essayer de répondre rapidement dans l’ordre 🙂
      Dans la majorité des thèmes une balise canonical est présente. Si elle est la il faut la retirer car vous préférez les urls avec collections et mettre le code du tuto pour dexindexer le products…
      Pour l’url native c’est par ce que shopify préfère et il faut souvent aller dans le sens du developpeur mais les 2 se valent
      Il est préférable de le supprimer dans la search console pour que ca aille plus vite sinon il faut attendre le passage du robot google pour qu’il refasse sa tabouille 🙂
      Les urls avec ? ca vient souvent de facebook qui rajoute ce genre d’identifiant au clic sur un lien… pas besoin de s’en occuper
      Bon WE à vous

  6. Bonjour,
    je veux supprimer uniquement les liens produits qui ne sont pas issus de la collection, je copie colle votre juste avant la fin de la bannière head, sur le theme Brooklyn.
    Mais rien ne fait, aucun changement ?
    (PS. j’ai aussi essayer de supprimer le code canonical, mais rien non plus?)
    Pouvez-vous me donner plus de détails ?

  7. Bonjour, je ne comprends pas la différence entre le canonical et la première solution donnée. Merci!

    1. Bonjour, la meilleure solution à l’heure actuelle reste la balise canocical. la 1ere solution reste identique mais elle la à titre informatif si le thème n’a pas la balise canonical.

  8. Bonjour,
    Merci pour les tutos ! 🙂
    Concernant la desindexation des pages types mentions légales, FAQ, CGV…
    Si je souhaite garder le canonical doit-on mettre à la suite le code canonical puis le code pour chaque page que l’on souhaite desindexer ?
    Comme dans l’exemple ci dessous ?

    {% if template == « page » %}
    {% assign $pageUrl = page.url | without: collection %}
    {% if pageUrl contains ‘conditions-generales-de-vente’ %}

    {% endif %}
    {% endif %}

    Bonne journée 🙂

    1. Hello, tu peux mettre des conditions OU… en adaptant la portion de code suivante : {% if pageUrl contains ‘conditions-generales-de-vente’ %} par
      {% if pageUrl contains ‘conditions-generales-de-vente’ or pageUrl contains ‘mentions-legales’ or pageUrl contains ‘faq’ %}
      Bonne soirée

  9. Bonjour, le fait de retirer « Code pour supprimer les urls de type: « /collections/nomdelacollection/nomduproduit ». » ceci ne va pas noindex les page de collections ?

    1. Hello, non car on sera sur le produit appartenant à la collection et non sur cette collection.

  10. Bonjour Dgeo Dev,
    Je pensai que avec la sitemap de shopify google n’indexait que les fiches produits canoniques et donc que nous n’étions pas pénalisé en SEO par le duplicate content des collections.
    En regardant avec googlesearchconsole c’est bien le cas, google n’a indexé que mes canonique.
    Aussi à quoi sert de toucher au code?
    Merci d’éclairer ma lanterne car je vois bien que tt le monde le fait 🙂

    1. Hello, alors ca dépend des thèmes 🙂 la plupart mettent la balise canonical sur l’url products/nomduproduit qui pour moi est le plus judicieux et si c’est le cas le tuto n’est pas vraiment utile 😉
      Par contre pour les personnes qui souhaitent une autre approche ou que le thème ne suit pas cette norme c’est pratique. Le sitemap de shopify est dynamique il s’adapte aux options du thème

  11. Bonjour Dgeo, J’ai récemment passé ma boutique shopify en multilingue et depuis google me l’indexe avec le sous-répertoire /en (« URL canonique déclarée par l’utilisateur »). Donc même sur un navigateur configuré en français, tout s’affiche en anglais… Est qu’une balise du type suffirait à faire comprendre à Google ou faut-il que j’utilise une balise canonical comme dans ton tuto ? Je voudrais que chaque version (chaque langue) soit indexée mais en gardant la langue française en version principale. Merci d’avance de ta réponse et de tous tes conseils !

    1. Hello, logiquement c’est dans l’application de multilangue que cela doit être géré. Si tu utilises Weglot ou Langify c’est automatiquement bien configuré.

  12. Je n’utilise pas weglot ou langify. L’application que j’utilise affiche bien la bonne langue sur le site en fonction de la langue du navigateur mais j’ai l’impression que cela ne fonctionne pas pour les liens Google (et les développeurs ne savent pas). Du coup je pense que ça va être à moi de le faire mais j’ai un doute sur la balise à utiliser…? Aussi, est-ce que cela peut venir du fait que dans les fichiers locales, c’est l’anglais qui est marqué en « default » alors que toute ma boutique est configurée en Français ? Est ce que cela peut influencer Google ?

    1. Alors google regarde avant tout si dans le theme.liquid (dossier Layout) la balise <html lang="fr"> est bien en fr… le fait d’avoir le thème par défaut en anglais va indiquer à google que le site est en <html lang="en">. Je pense que le simple fait de mettre votre thème en français résoudra effectivement le soucis. Sinon il faudra investiguer si l’app le modifie pas le « fr » par « en » dans la balise html.

  13. Oui je comprends merci beaucoup ! Vaut-il mieux que je modifie la balise en « fr » ou que je supprime et recrée les deux fichiers locales (fr et en) pour mettre le « default » sur fr ?

    1. Alors tout dépend du thème mais si il est bien codé le simple fait de définir dans Boutique en ligne – Actions – Modifier langue et mettre en français modifie directement la balise en fr. Sinon oui vous pouvez forcer en le modifiant dans le fichier mais ca risque de supprimer la prise en compte dynamique du changement du système de multilangues…

  14. La boutique était bien configuré en français dans « modifier langue » mais la balise n’avait pas été modifié en « fr » donc je vais mettre le « fr » moi même et je verrai bien. Merci beaucoup en tout cas !

  15. Hello, j’ai un soucis avec comment les canoniques url sont géré par shopify :

    Lorsqu’on se rend une page produit en passant par une collection, l’url canonique est forcément : monsite.fr/products/nom-du-produit

    Cependant l’URL normal pour la même page est : monsite.fr/collections/nom-de-la-collection/products/nom-du-produit.

    Du coup l’url canonique se retrouve « canoniqualisé » vue que les deux url sont différentes…

    J’aimerais que l’url canonique adapte correctement le chemin par ou le robot est passé pour se rendre sur X produit.

    Ce site est un bon exemple de ce dont je parle avec l’extension détailled SEO, on voit bien qu’il décide si une page produit devrait être « canonical » tout en ayant le chemin de base du type : monsite.fr/collections/nom-de-la-collection/products/nom-du-produit

    Lien de l’exemple : https://exotischerleben.de/collections/bambus-nachttisch/products/bambus-nacht-konsole-tabanan

    Je ne sais pas si vous voyez ou je veux en venir , j’espère que vous allez pouvoir me venir en aide !

    Merci

    1. Bonjour, avec ce tuto vous pouvez définir génériquement si les urls de types products ou collections…/products laquelle de ces options seront prises en comptes. Cependant il est techniquement possible de faire des conditions basées sur les identifiants pour reprendre la main sur chaque produit mais cela demande une certaines compréhension du code et ca risque d’être vite une source de problème à la moindre erreur… A voir si des apps peuvent faire ce genre de choses mais honnêtement le canonical sur les urls natives /products/nomduproduit reste vraiment le plus efficace d’un point de vue SEO 😉

  16. Hello, Tout d’abord merci pour votre réponse rapide. Donc si j’ai bien compris, avec votre tuto si je décide prendre en compte que les urls de types collections…/products , la canonique prendre l’url de base collection/nom-de-collection/products/nom-du-produit c’est bien sa ? 🙂

    1. Oui c’est bien cela avec 2 avertissements ! 1. Bien enlever la balise canonical présente dans Layout – Theme.liquid / 2. ne pas avoir le même produit dans plus d’une collection sinon il va canoniser le même produit sur toutes les collections ou il est lié 🙂

  17. Coucou, je vois votre réponse tardivement.

    Je vous remercie pour votre réponse et pour tout vos tutoriels, ils sont vraiment excellent et aide énormément. Concernant mon soucis, entre temps j’ai réussi à changer toute les canonique que je voulais en incluant les collections mais malheureusement le sitemap shopify généré automatiquement à crée un conflit au niveau du crawl de mes pages, aucune des /collections…/product n’a été indexé.

    Je vais tenter votre tuto pour voir si je peut désindexé les urls /products/nom de produit.

    1. Je vois, peut être une nouvelle lubie de shopify… dans ce cas essayer d’exclure le sitemap.xml de shopify dans la google seach console et laisser google gérer l’indexation lui même ou sinon demander au support de shopify d’intervenir car n’ayant pas d’accès au serveur ils sont les seuls capables de modifier cette configuration

  18. Bonjour à nouveau,

    J’ai essayer la solution numéro 1 et sa desindexe bien l’url. Parcontre il y a un soucis, il desindexe également toutes les urls qu’ils contiennent /collection ou non…

    Comme si il ne prenais pas en compte/ne voit pas le : Without collections, j’ai essayer avec le within, même chose :/

    Savez-vous d’où vient le soucis ? Merci pour votre aide

  19. Merci pour ce tuto. J’ai néanmoins une question importe sur les urls produits. Si je décide de désindexer les urls avec /collections et en gardant uniquement les urls /products, n’est-il pas plus intéressant de diriger directement l’internaute et google sur l’url /products quand on navigue sur le site ?

    Je trouve que cela fait tâche ! Faut-il créer une redirection manuellement pour chaque produit (nuisible seo? ) ou entrez un bout de code pour simplifier tout cela ? (je suis preneur si vous avez un code pour le thème turbo).

    Merci pour votre assistance ?

    1. Bonjour, effectivement sur la majorité des thèmes les urls de listing de produits sur la page d’accueil ou sur les collections redirigent vers des urls types du style : collection/… Speedfly propose cette option au besoin 😉 sinon pour le thème turbo je ne sais pas désolé le système de fichiers est très bordélique, il faudrait demander à leur support directement. Bonne journée

Laisser un commentaire

Fermer le menu

Envie d'apprendre à Coder et Maitriser ton Thème Shopify  ?

Alors abonne-toi à la chaine et active la cloche pour ne pas louper l'arrivée des prochaines vidéos !

S'abonner à la chaine