URLs et UUIDs

Je plani­fie l’ex­tinc­tion du Word­press qui me sert de blog. Je vais proba­ble­ment partir plus vers du 11ty ou du Astro avec une géné­ra­tion statique.

Je me pose la ques­tion des URLs.

URLs courtes

On a pendant un temps cru que les URLs allaient dispa­raitre. On voit aujourd’­hui plutôt le contraire. Avec les plate­formes de micro­blog, ces URLs font partie du message visible.

À la fois pour prendre moins d’es­pace visuel­le­ment et parce que le nombre de carac­tères est souvent limité, l’idéal ce sont des iden­ti­fiants courts.

Mon idéal à ce niveau, c’est quelque chose comme bit.ly : une suite de quelques carac­tères alpha­nu­mé­riques comme iden­ti­fiant pour chaque contenu.

3 carac­tères permet de comp­ter en centaine de milliers d’iden­ti­fiants. 4 carac­tères permet de comp­ter en millions. Ça devrait être large­ment assez.

-> https://survol.fr/eJo8

C’est aussi parfait pour reco­pier une URL en prove­nance des jardins fermés qui inter­disent les liens. J’ai demandé autour de moi, vous êtes quand même 80% à taper à la main de temps en temps (pas que le nom de domaine), et certains très fréquem­ment.

URLs non prédic­tibles

Mon second besoin est malheu­reu­se­ment opposé. Je souhaite limi­ter la décou­vra­bi­lité de mes conte­nus.

Je sais que ce besoin est peu habi­tuel mais il me donne une liberté d’écri­ture à laquelle je tiens de plus en plus. Rien n’est vrai­ment caché mais il faut avoir eu un lien pour accé­der à quelque chose, soit direc­te­ment soit via de la navi­ga­tion.

Mon public est tech­nique voire expert. 4 carac­tères et quelques millions de possi­bi­li­tés, on peut tester toutes les combi­nai­sons en une ques­tion de minutes. Ça ne suffit pas.

Si je veux que tester toutes les combi­nai­sons soit impra­ti­cable, il faut noyer ces quelques milliers ou millions d’iden­ti­fiants dans beau­coup plus. Beau­coup beau­coup plus.

Sur des calculs de coin de table en exagé­rant tout, mon espace d’adresse doit faire dans les 64 bits1. Même codé en base64, mes iden­ti­fiants font désor­mais 11 carac­tères. J’au­rais préféré plus court.

URLs faciles à saisir

Il m’est arrivé de lais­ser des URLs dans des espaces où les liens sont impos­sibles. J’ai demandé autour de moi, vous êtes quand même 80% à parfois taper à la main des adresses de pages profondes, et certains plusieurs fois par mois.

Bref, j’ai­me­rais que ce soit possible, et pas trop pénible malgré la longueur. Idéa­le­ment on peut utili­ser un titre signi­fi­ca­tif ou au pire une liste de quelques mots géné­rés à la dice­ware. Malheu­reu­se­ment ça ne passera pas le premier de mes besoins lié à la taille. On va garder les 10–12 carac­tères.

En base36 je peux me conten­ter des lettres minus­cules et des chiffres. Si j’en­lève le l et le 1 qui sont parfois ambi­gus dans certaines polices de carac­tères, j’ar­rive à une base34. Ça me fait proba­ble­ment ajou­ter 2 carac­tères de plus.

Vu que taper des adresses reste rare, je vais m’éco­no­mi­ser les 2 carac­tères et m’ap­pro­cher de base64. Je vais juste reti­rer les deux carac­tères spéciaux ainsi que les carac­tères l O 0 1 et I qui créent des ambi­guï­tés. J’ar­rive à une base57.

Des URLs signi­fi­ca­tives

Le quatrième critère c’est norma­le­ment celui des URLs signi­fi­ca­tives. C’est le cas de la plupart des blogs où le titre se retrouve aussi dans l’adresse.

J’ai demandé et vous êtes quand même plus de la moitié à trou­ver ça impor­tant.

Je vais toujours donner au moins un titre, un texte ou un contexte avec le lien, donc il y a peu d’am­bi­gui­tés. Les quelques plate­formes qui affichent les adresses telles quelles sont aussi celles qui vont ajou­ter une carte en récu­pé­rant le titre et une image pour les présen­ter sous le lien. Le doublon est-il bien néces­saire ?

J’hé­site encore. Je ne peux pas avoir court, impré­dic­tible et signi­fiant à la fois. Mon cœur balance pour me passer de la signi­fiance des adresses.

Le SEO n’est pas un objec­tif, voire serait de toutes façons contre-produc­tif vis-a-vis de mon second objec­tif.

Mettre tout ça bout à bout

À tout ça il faut que j’ajoute le nom de domaine et une manière de segmen­ter. Actuel­le­ment j’ai doublé la segmen­ta­tion, le « n. » dans le sous-domaine, et le « n/ » dans le chemin2. Il est probable que je ne garde qu’un seul des deux.

Si je mets tout ça bout à bout, je vais avoir des URLs qui vont ressem­bler à « https://survol.fr/n/2qQVKC6AumxR »3.

Je ne m’in­ter­dis pas de chan­ger d’avis et par exemple ajou­ter le slug comme option­nel après l’iden­ti­fiant. Dites-moi ce que ça change pour vous.


  1. Ça fait beau­coup mais je veux prévoir le futur où toutes les inter­ac­tions pour­raient à l’ave­nir se retrou­ver avec un iden­ti­fiant, ce qui fait un paquet d’iden­ti­fiants d’ici à la fin de ma vie. ↩︎
  2. « n » c’est pour « notes », pour ceux qui se posent la ques­tion. ↩︎
  3. Oui, il y aura redi­rec­tion et les anciennes conti­nue­ront de fonc­tion­ner. ↩︎

Comments

3 réponses à “URLs et UUIDs”

  1. Avatar de saymonz

    En étant un peu tordu, on peut concilier identifiants courts et contenu non découvrable par bruteforce en renvoyant toujours un code HTTP 200 et affichant un contenu généré aléatoirement sur les URI non-existants.

  2. […] eu pas mal de réponses sur mon précé­dent billet hier soir. L’idée de reti­rer le slug des URLs ne semble pas du tout faire […]

  3. Avatar de Balistic
    Balistic

    Bonjour,
    à la place d’UUID, vous pouvez utiliser un générateur de mots inconnus (tel que celui-ci : https://lehollandaisvolant.net/tout/tools/fake-words/ )

    ça permet de générer des urls à la fois facile à taper (car basées sur des syllabes françaises), plutôt courtes, et qui pourtant ne sont pas facilement trouvables.
    Exemple : https://n.survol.fr/n/aderface

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *