Je suis Charlie

Autres trucs

Accueil

Seulement les RFC

Seulement les fiches de lecture

Ève

Les beaux URL

Première rédaction de cet article le 10 janvier 2008
Dernière mise à jour le 14 janvier 2008


Beaucoup de sites Web affichent, dès qu'on dépasse la page d'accueil, et même parfois dès la page d'accueil, des URL incompréhensibles, très longs et bourrés de paramètres dont l'utilisateur ne connait pas la signification. C'est déplorable, à la fois pour des raisons esthétiques et pour des raisons pratiques. Pourquoi est-ce regrettable ? Comment éviter cela ?

Prenons quelques exemples affreux. L'UNESCO proclame 2008 l'« Année Internationale des Langues » et la page Web de présentation de l'activité est à l'URL http://portal.unesco.org/culture/en/ev.php-URL_ID=35559&URL_DO=DO_TOPIC&URL_SECTION=201.html. Pourquoi ne pas avoir utilisé le plus court et plus parlant http://www.unesco.org/iyl ?. Autre exemple, si on se promène sur le site de Dell à la recherche d'informations sur le Latitude 430, on arrive en http://premierconfigure.euro.dell.com/dellstore/config.aspx?cs=RC1077983&customer_id=RC1077983&oc=LD4301&~tgt=global_cfg&c=FR&l=fr&s=PAD. Pourquoi ne pas avoir un URL comme http://www.dell.com/computers/latitude-d430/ ? Un dernier exemple, alors que la loi est censée être facilement accessible à tous, il n'existe pas de moyen de fabriquer facilement l'URL pour, mettons le « Décret n°2006-1386 du 15 novembre 2006 fixant les conditions d'application de l'interdiction de fumer dans les lieux affectés à un usage collectif ». Sur Légifrance, on arrive à un URL de http://www.legifrance.gouv.fr/affichTexte.do?cidTexte=JORFTEXT000000818309&dateTexte=20080124&fastPos=5&fastReqId=621185253&oldAction=rechTexte. Pourquoi pas http://www.legifrance.gouv.fr/decrets/2006/11/15/1386 ? Manifestement, le webmestre de Légifrance a lui-même des problèmes avec de tels URL puisque, lorsqu'on regarde l'article R3512-1 du Code de la Santé Publique, et qu'on voit un beau lien vers le décret, ce lien ne fonctionne pas « Aucun document ne correspond à votre demande » !

C'est très laid. De tels URL heurtent mon sens esthétique. Pour se remonter le moral, voici quelques exemples de beaux URL :

Outre l'aspect esthétique, les URL laids posent aussi des problèmes pratiques (également bien détaillés dans un excellent article de Jakob Nielsen). Étant longs, ils sont difficiles à copier-coller, par exemple dans un courrier. Révélant le fonctionnement interne du site Web (noms des paramètres, type de langage utilisé comme PHP pour le site de l'UNESCO), ils ne sont pas stables. Si le site passe à un autre CMS, ces URL changeront probablement, en contradiction avec les principes posés dans l'article Cool URIs don't change.

Surtout, ces URL sont « indécodables ». Avec la meilleure volonté du monde, on ne peut pas les comprendre, on ne peut pas les mémoriser et on ne peut pas les bricoler de manière créative, par exemple en changeant la valeur d'un paramètre.

De tels URL sont parfois volontaires, par exemple pour décourager la création de « liens profonds » (liens hypertexte pointant vers une autre page que la page d'accueil). Pourquoi diable voudrait-on décourager les liens profonds ? Typiquement pour empêcher le lecteur d'accéder directement à l'information qui l'intéresse et pour l'obliger à suivre le parcours officiel, partant de la page d'accueil.

De tels URL très longs sont parfois volontaires parce qu'il y a beaucoup d'informations à indiquer. C'est le cas des URL de Google Maps où il y a beaucoup à encoder (notamment longitude et latitude). Par exemple, dans http://www.google.com/maps?f=q&hl=en&geocode=&time=&date=&ttype=&q=san+cristobal+de+las+casas,+chiapas,+mexico&sll=16.75655,-93.129044&sspn=0.425394,0.579529&ie=UTF8&ll=16.738551,-92.633286&spn=0.053179,0.072441&t=h&z=14&iwloc=addr&om=1, les chiffres dans le paramètre ll indiquent la latitude et la longitude. Mais de tels URL ne sont pas gratuitement compliqués, ils stockent de l'information et ils sont décodables et modifiables. Notamment, je peux générer un tel URL facilement, sans avoir besoin de Google Maps, ce qui permet des applications géographiques intéressantes de type mashup. Par exemple, comme le service Vélib' donne accès à la latitude et la longitude de chaque station (dans le fichier http://www.velib.paris.fr/service/carto), on peut facilement faire un programme qui crée un URL Google Maps pour chaque station, comme c'est le cas sur des sites comme Roulib ou bien http://v.mat.cc/. D'ailleurs, il existe même un langage pour décrire ces gabarits d'URL, normalisé dans le RFC 6570.

Mais, la plupart du temps, ces URL sont complexes car le webmestre a installé un logiciel de gestion du site Web (qu'il n'a pas toujours choisi) et que ce sont les URL par défaut du logiciel et que le webmestre ne peut pas ou ne sait pas les modifier (ou, pire, n'a pas compris à quoi servaient les URL).

A contrario, certains logiciels, comme la plupart des moteurs de blogs, fabriquent des URL clairs et simples, et faciles à décoder. Ils ne sont pas forcément stables sur le long terme (les professionnels de la stabilité suggèrent en général de ne pas mettre trop d'information dans l'URL car un changement de cette information changerait l'identificateur) mais ils sont bien agréables à manipuler.

Alors, que peut-on faire pour ne pas avoir de tels URL ? Si le webmestre est impossible à faire évoluer sur ce sujet (souvent, il ne lit même pas ses messages), il existe des mécanismes de contournement comme tinyurl. Ces systèmes créent une correspondance entre un URL et un identificateur à eux, et fournissent un service de redirection automatique. C'est ainsi que http://tinyurl.com/2u2ewd va au même endroit que l'affreux URL de l'UNESCO cité plus haut. Mais ces mécanismes ont leurs propres inconvénients, notamment le fait que l'URL soit encore moins décodable qu'avant (on ne voit même pas le nom de domaine, donc on ne peut pas savoir qui est responsable).

L'idéal est donc quand le webmestre fait bien son travail. Pour l'aider, voyons quelques techniques utiles. Notons d'avord qu'il n'existe aucune raison technique valable d'utiliser des URL affreux. On voit parfois certains débutants croire que des URL incluant un point d'interrogation sont nécessaires si la recherche de l'information est dynamique (par exemple http://www.maboutique.fr/catalogue?objet=642342). Mais c'est faux, l'URL est indépendant de la méthode utilisée pour générer la page. On peut avoir un URL qui va faire une recherche dynamique dans une base de données, sans point d'interrogation dedans. (On notera que, soucieux de prouver chaque jour qu'on peut breveter n'importe quoi, l'office états-unien des brevets a enregistré un brevet n° 7,287,042 qui réserve cette technique à Amazon, en dépit de nombreux précédents d'utilisation, que l'incompétence ou la malhonnêteté de l'office des brevets ne lui a pas permis de détecter.)

Notons d'abord que beaucoup de CMS ou de logiciels équivalents permettent de faire facilement des beaux URL. Si ce service n'est pas activé par défaut, il est souvent bien documenté. Par exemple, le CMS SPIP a une documentation détaillée « Utiliser des URLs personnalisées ».

Sinon, la solution générale, si on n'est pas l'auteur du CMS utilisé ou bien qu'on n'a pas envie de se plonger dans le code source est, si on utilise Apache, de se servir de l'excellent (mais complexe) module mod_rewrite.

Version PDF de cette page (mais vous pouvez aussi imprimer depuis votre navigateur, il y a une feuille de style prévue pour cela)

Source XML de cette page (cette page est distribuée sous les termes de la licence GFDL)