Pour comprendre l'utilité d'indiquer à Google une URL canonique, il suffit de songer aux sites dont les URLs comportent des paramètres en nombre variable, parmi lesquels des paramètres permettant d'établir le suivi d'un client potentiel (cas d'une opération de parrainage ou de campagne publicitaire soucieuse du retour sur investissement) ou de fournir un identifiant de session (cas pratique lorsque l'utilisateur ne peut ou ne veut accepter des cookies de session).

Ces derniers types de paramètres sont d'autant plus problématiques que, lorsqu'on les supprime, on obtient une URL, certes différente, mais donnant accès au même contenu. Autrement dit :

  • http://exemple.fr/produit.php?item=produit&trackingid=identifiant de suivi&sessionid=identifiant de session,
  • http://exemple.fr/produit.php?item=produit&trackingid=identifiant de suivi,
  • http://exemple.fr/produit.php?item=produit&sessionid=identifiant de session et
  • http://exemple.fr/produit.php?item=produit

sont quatre URLs susceptibles d'accéder à la même page, donc au même contenu, mais sont le plus souvent traitées par les moteurs de recherche comme quatre URLs distinctes, c'est-à-dire quatre URLs censées accéder à des pages différentes. Par conséquent, les moteurs de recherche considéreront que le contenu est multiplié par autant d'URLs qui y accèdent. Dans certains cas, notamment quand les URLs proviennent de noms de domaines différents, la duplication de contenu peut amener le moteur de recherche (en particulier, Google) à sanctionner le site recourant à cette pratique.

À défaut d'optimiser le site pour supprimer les URLs superflues, ou du moins les paramètres posant problème (comme celui de l'identifiant de session), il est possible d'indiquer aux moteurs de recherche quelles sont les URLs à prendre en compte (et donc à indexer). Le protocole Sitemap permet déjà d'y remédier. Mais, Google propose une autre solution, qui consiste à insérer un élément link contenant un attribut rel, de valeur canonical, et l'attribut href, dont la valeur est l'URL canonique pour la page en question. Ce qui donne, par exemple, le code suivant :

<link rel="canonical" href="http://exemple.fr/produit.php?item=produit" />

L'URL canonique peut être aussi bien absolue que relative ; de plus, l'URL peut aussi être une redirection. En revanche, il est recommandé de s'assurer que l'URL canonique ne génère pas une erreur 404 et, surtout, l'URL canonique ne peut pas concerner un nom de domaine différent (par exemple, une URL du domaine exemple-produits.fr alors que le site comportant l'URL canonique relève du domaine exemple.fr) ; toutefois, les autres sous-domaines du site en question sont acceptés.

À noter que cette technique peut être adoptée par n'importe quel autre moteur de recherche.