Error: Multiple canonical tags found on this page. C’est ce que remonte l’outil de validation lorsqu’on inspecte le code source d’une fiche produit qui affiche pourtant un seul et bon canonical dans l’aperçu de Yoast SEO. Le décalage entre ce que montre l’éditeur et ce que reçoit réellement un moteur de recherche est le symptôme central de ce bug, et il passe facilement inaperçu tant que personne ne va vérifier le HTML final.
Symptôme : deux balises canonical dans le head
En affichant le code source d’une fiche produit WooCommerce, on trouve parfois deux lignes de ce type dans le <head> :
<link rel="canonical" href="https://boutique.example/produit/veste-hiver/" />
<link rel="canonical" href="https://boutique.example/produit/veste-hiver/?ref=catalogue" />
Un moteur de recherche qui rencontre deux balises canonical contradictoires sur la même page ignore purement et simplement les deux, ou choisit arbitrairement l’une d’elles selon son propre algorithme. Dans les deux cas, le développeur perd le contrôle qu’il pensait avoir sur l’URL canonique de la fiche produit.
Diagnostic : deux extensions SEO actives en parallèle

La cause la plus fréquente tient à la coexistence de deux extensions qui génèrent chacune leurs balises meta pour WooCommerce : Yoast SEO d’un côté, et une extension WooCommerce SEO indépendante de l’autre, souvent installée pour un besoin ponctuel (flux Google Shopping, schéma enrichi spécifique) puis jamais désactivée après usage. Chacune de ces extensions accroche sa propre balise canonical au hook wp_head, sans se soucier de la présence de l’autre.
Pour confirmer ce diagnostic, la méthode la plus fiable consiste à désactiver temporairement chaque extension SEO l’une après l’autre, sur un environnement de recopie, et à observer à quel moment le doublon disparaît du code source. Un simple grep sur le HTML rendu permet aussi de repérer rapidement le nombre d’occurrences de rel="canonical" :
curl -s https://boutique.example/produit/veste-hiver/ | grep -c 'rel="canonical"'
Une valeur de 2 ou plus confirme le conflit sans ambiguïté.
Correctif : désactiver la génération redondante côté extension SEO secondaire
Une fois l’extension responsable identifiée, deux options s’offrent au développeur :
- Désactiver complètement l’extension SEO secondaire si ses autres fonctionnalités (flux produit, schéma) peuvent être reproduites autrement, notamment via les réglages natifs de Yoast SEO pour WooCommerce.
- Si l’extension secondaire doit rester active pour une fonctionnalité qu’elle est seule à fournir, retirer spécifiquement sa génération de balise canonical via un filtre dédié, en laissant Yoast SEO seul responsable de cette balise précise.
La seconde option demande d’identifier le hook exact utilisé par l’extension secondaire — souvent un ajout direct sur wp_head avec une priorité proche de celle de Yoast, ce qui explique pourquoi les deux balises sortent presque côte à côte dans le code source.
Prévention : une seule extension responsable des balises meta
La règle qui évite ce type de conflit est simple à énoncer et pourtant régulièrement transgressée sous la pression d’un besoin ponctuel : une seule extension gère les balises meta d’une boutique, jamais deux, même temporairement. Avant d’installer une nouvelle extension SEO pour un besoin précis (un flux, un schéma spécifique), il faut vérifier qu’elle ne touche pas elle aussi au <head> global de la fiche produit.
- Auditer la liste des extensions actives dès qu’un doublon de balise meta est suspecté, pas seulement le canonical.
- Documenter dans le wiki interne du projet quelle extension a la responsabilité exclusive du SEO produit.
- Ajouter un test automatisé simple, exécuté après chaque déploiement, qui vérifie qu’une seule balise canonical est présente sur un échantillon de fiches produit.
Un site qui accumule les extensions SEO pour additionner leurs fonctionnalités finit toujours par additionner aussi leurs balises meta, en silence, jusqu’au jour où le trafic organique commence à décliner sans raison apparente.
Vérifier après correction
Après avoir neutralisé la source du doublon, il reste indispensable de revalider le rendu réel avec un outil d’inspection d’URL indépendant des deux extensions elles-mêmes, plutôt que de se fier à leur propre aperçu interne. L’outil d’inspection d’URL de Google Search Console reste la référence pour confirmer que le moteur de recherche voit désormais une seule balise canonical cohérente avec l’URL souhaitée.
En résumé
Un doublon de balise canonical sur une fiche produit WooCommerce trahit presque toujours deux extensions SEO actives en même temps, chacune persuadée d’être seule responsable du <head>. Le correctif ne consiste pas à retoucher les réglages de Yoast, mais à couper la génération redondante à la source, puis à s’assurer qu’une seule extension conserve cette responsabilité pour de bon.