Accueil du site > Documentation > URL canonique

URL canonique

lundi 23 février 2009, par Fil

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 :
- http://monsite.tld/article12
- http://monsite.tld/Mon-titre-d-article
- http://www.monsite.tld/article12.html?couleur=bleu
- http://www.monsite.tld/article12.html?post=1
- http://www.monsite.tld/article12.html?PHPSESSID=a2c5fe78

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.

- http://googlewebmastercentral.blogs...
- http://www.seomoz.org/blog/canonica...

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 :

<link rel="canonical"
  href="http://www.monsite.tld/URL-canonique" />

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] :

<link rel="canonical"
   href="[(#URL_ARTICLE|url_absolue)]" />

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.

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="..." />.

Notes

[1] Intégré à la branche dev de SPIP ; on peut utiliser le patch http://trac.rezo.net/trac/spip/chan... si on veut l’utiliser tout de suite en version 2.0 stable.

11 Messages de forum

  • URL canonique Le 23 février 2009 à 19:09

    Canonique ta mère ?

  • URL canonique Le 23 février 2009 à 19:09 , par BoOz

    C’est canon ces urls !!! Bien plus classe que les "permalinks".

    • URL canonique et permalien Le 23 février 2009 à 20:13 , par Fil

      Il y a une petite nuance, cf. encadré que je viens d’ajouter dans l’article. (Je me suis creusé le neurone pour tenter d’esspliquer clairement.)

  • URL canonique Le 20 décembre 2010 à 12:09 , par Yffic

    Salut fil

    Qu’en est-l de l’utilisation de ces urls canoniques dans spip à ce jour (spip 2.1.3). Je ne vois pas la ligne que tu indiques dans les squelettes de la dist. Donc c’est géré autrement ? ou abandonné ?

    • URL canonique Le 20 décembre 2010 à 12:27 , par Fil
    • URL canonique Le 6 janvier 2011 à 19:43

      Effectivement, ce n’est pas dans les squelettes par défaut, malgré le commit 13773. En plein transition de trac à redmine, pas évident de faire un retour...

      Dommage de d’avoir abandonné ce commit dans les dernières versions de SPIP.

    • URL canonique Le 6 janvier 2011 à 21:14 , par Fil

      Non, ce n’est pas qu’il est pas abandonné, c’est qu’il n’est pas encore adopté dans la branche stable : le lien que je t’a indiqué figure dans dist_2007, qui est une extension de la branche dev de SPIP. Les URLs canoniques ne sont donc pas encore dans la branche stable (actuellement spip-2.1).

  • URL canonique Le 22 septembre 2011 à 11:45 , par Ben
  • URL canonique Le 14 février 2012 à 12:30 , par Mathieu

    ça c’est pas mieux ?
    [<link rel="canonical" href="(#SELF|url_absolue)" />]

    • URL canonique Le 14 février 2012 à 12:37 , par Fil

      non :)

      "Canonique" signifie l’adresse "unique" à laquelle on va trouver le contenu. En utilisant #SELF tu dis juste "le contenu est ici-même", ce ui n’apporte rien.

  • URL canonique Le 14 avril 2012 à 21:07 , par Nicolas Krebs

    Nouveau standard d’URL canonique :
    RFC 6596 : The Canonical Link Relation, http://tools.ietf.org/html/rfc6596 http://www.ietf.org/rfc/rfc6596.txt
    et recension par Stéphane Bortzmeyer, 9 avril 2012, http://www.bortzmeyer.org/6596.html .