ZZZ : URL canonique

Cet article est une copie de sauvegarde de l’article original de Fil sur le désormais disparu : http://zzz.rezo.net/URL-canonique.html

, par clem

Je demandais hier sur #spip si quelqu’un connaissait un standard pour signaler l’URL canonique d’une page Web. S’koi ? Si on est en train de lire une page sur un site, on peut l’avoir abordée par plusieurs adresses :

Tout ça, ce sont des URLs valables, qui affichent bien le même article. Mais si je veux mettre des gens (ou des robots) d’accord sur ce qu’est la « vraie » adresse de cet article, il faut que je l’annonce, d’une manière ou d’une autre.

Cette problématique concerne au premier chef les moteurs de recherche et d’indexation (mais pas seulement). Or il se trouve que pas plus tard que la semaine dernière les trois poids lourds Google, Yahoo et Live (Microsoft) annonçaient que leurs algorithmes allaient accepter qu’on leur parle de l’URL canonique d’une page.

-  https://developers.google.com/search/blog/2009/02/specify-your-canonical
-  https://moz.com/blog/canonical-url-tag-the-most-important-advancement-in-seo-practices-since-sitemaps

C’est bien fait, et c’est simple à mettre en œuvre. En gros, pour toute page HTML qui peut avoir plusieurs adresses, on va indiquer laquelle est la principale, en insérant dans son <head>...</head> une balise :

Les algorithmes qui le souhaitent sauront donc que la page http://www.monsite.tld/article12 qui mentionne ce lien doit en fait être considérée comme étant à l’adresse canonique http://www.monsite.tld/URL-canonique. Et feront leurs calculs (PageRank...) et affichages (résultats de recherche...) en tenant compte de cette information.
* * *

Autre exemple d’usage (qui était celui qui avait suscité ma question) : lorsqu’on veut participer aux sites de partage de bookmarks type delicious.com, il importe que les différents partageurs se mettent d’accord sur une adresse unique, de manière à pouvoir discuter de la même chose, même s’ils l’ont vue dans un contexte différent. Le plugin SPIP Social Tags en tient compte.

Dans le squelette SPIP article.html, il suffit d’indiquer dans la partie <head>..</head> le code suivant [1] :

Pour que Google considère qu’un (vieux) lien vers http://monsite.tld/a1.html pointe en fait vers http://www.monsite.tld/Titre-article (URL canonique de l’article si on a activé les URLs « propres »). Ou que SocialTags indique le nouvel URL dans delicious quand on clique sur l’icone, même si le navigateur indique http://www.monsite.tld/Titre-article?PHPSESSID=12345.

P.-S.

URL canonique et permalien

C’est bien gentil ces URLs canoniques, mais quelle est la différence avec le permalien ?

L’idée du « permalien » d’un article, c’est d’avoir un lien qui référencera toujours cet article ; ainsi, sur un blog, on veut que les gens qui référencent un article ne fassent pas un lien vers la page d’accueil — alors que celle-ci va tourner au fur et à mesure de l’ajout de nouveaux articles — mais plutôt un lien vers une page précise qui affichera toujours l’article dans deux semaines, quand il ne sera plus sur la page d’accueil.

Bien sûr le permalien pointera en général vers l’URL canonique de l’article, ce qui fait qu’en pratique, ces deux propriétés ont la même valeur.

Cependant, les deux notions ne sont pas identiques. On peut imaginer qu’un permalien nous redirige vers l’URL canonique, laquelle peut changer au cours du temps. Par exemple, lorsque SPIP sera racheté par la Mozilla Corp., l’URL canonique de l’article de l’article « Est-ce que je peux... », qui est actuellement http://www.spip.net/fr_article1475.html, deviendra (sur ordre du département marketing) https://spip.mozcorp.world/Est-ce-que-je-peux.html.

L’URL canonique de cet article aura donc changé. Mais http://www.spip.net/fr_article1475.html est et restera un permalien : il affichera toujours le bon article (soit directement, soit en renvoyant le lecteur vers le site mozcorp.world).

Autrement dit :

  •  un permalien (il peut y en avoir plusieurs pour un même article) est un lien qui pointe toujours vers cet article (cette « ressource », en jargon webique). On le code sous la forme <a rel="bookmark" href="...">. Tant qu’il permet de retrouver la ressource, fût-ce à travers des modifications de formatage des URLs, des redirections et des changements de noms de domaine, c’est un permalien.
  •  l’URL canonique d’une ressource quant à elle est unique (mais pas forcément permanente) : elle signale l’adresse « standard » où il faut aller chercher cette page, même si on l’a trouvée ailleurs. On la référence à l’intérieur de l’entête de la page sous la forme <link rel="canonical" href="..." />.