Être recontacté

Structure d'URL et slugs pour un site programmatique

Mis à jour le 19 août 2026 · 7 min de lecture · Intention : informationnelle · Architecture

Sur un site généré, l'URL n'est pas un détail cosmétique : c'est la clé primaire publique de chaque page. Une nomenclature mal choisie se paie en redirections, en duplication et en perte de signal des années plus tard.

Schéma de nomenclature des URL d'un site généré
Schéma de nomenclature des URL d'un site généré

Les six règles de nommage

  1. Minuscules uniquement. Les serveurs distinguent parfois la casse, ce qui crée deux URL pour une page.
  2. Tirets, jamais d'underscores. Le tiret est traité comme un séparateur de mots, l'underscore non.
  3. Pas d'accents ni de caractères non-ASCII. Techniquement possibles via l'encodage pourcent, mais illisibles dans les logs, les exports et les partages.
  4. Pas de mots vides. /blog/comment-faire-un-sitemap plutôt que /blog/comment-est-ce-que-l-on-fait-un-sitemap.
  5. Longueur maîtrisée. Trois à six mots significatifs. Au-delà, la lisibilité et le taux de clic depuis les partages se dégradent.
  6. Stable. Une URL qui change casse tous les liens entrants — externes comme internes.

Profondeur de répertoire : plate ou hiérarchique ?

ModèleExempleAvantageInconvénient
Plat/blog/{slug}Aucune migration si la taxonomie changeAucun signal de hiérarchie dans l'URL
Hiérarchique/blog/{categorie}/{slug}Fil d'Ariane naturel, silos lisiblesToute recatégorisation impose des redirections

Sur un projet programmatique, le modèle plat est presque toujours le bon choix. La taxonomie d'un lot généré évolue — des sous-thèmes sont fusionnés, d'autres éclatés — et chaque évolution coûterait une vague de redirections. La hiérarchie est alors portée par le maillage interne et par le fil d'Ariane balisé, pas par le chemin d'URL.

Le fil d'Ariane en BreadcrumbList transmet la hiérarchie à Google indépendamment du chemin d'URL. C'est ce qui rend le modèle plat viable sans perte de signal.

Un identifiant unique et stable

Le slug doit être généré une fois, à la création, puis figé — même si le titre de la page évolue ensuite. Un titre est un élément éditorial ; un slug est un identifiant technique. Les confondre revient à changer de clé primaire à chaque relecture.

slug = translitterer(titre_initial)
     |> minuscules
     |> remplacer(non_alphanumerique, "-")
     |> supprimer(mots_vides)
     |> tronquer(60)
     |> deduplicater()   # -2, -3 en cas de collision

La déduplication mérite attention : deux titres différents peuvent produire le même slug après translittération. Sans contrôle d'unicité en base, la seconde page écrase la première ou renvoie une erreur silencieuse.

Quatre pièges spécifiques au programmatique

Les paramètres d'URL

Un filtre en ?tri=prix&page=2 multiplie les URL pour un contenu quasi identique. Soit les combinaisons utiles deviennent des URL propres, soit elles sont neutralisées par un canonical.

Le slash final

/blog/article et /blog/article/ sont deux URL distinctes. Il faut en choisir une et rediriger l'autre en 301, au niveau du serveur, une fois pour toutes.

Les entités homonymes

Deux entités portant le même nom exigent une désambiguïsation dans le slug : /blog/nice-ville et /blog/nice-outil. Le suffixe doit venir de la donnée, pas d'un compteur.

Les dates dans l'URL

Une URL contenant une année vieillit publiquement et impose une migration annuelle. Sur du contenu à durée de vie longue, l'année se met dans le title, jamais dans le slug.

Si la structure doit changer malgré tout

Redirections 301 systématiques, mise à jour des liens internes dans la base (pas seulement en surface), régénération complète des sitemaps, et conservation des anciennes URL dans un sitemap dédié pendant quelques semaines pour accélérer la prise en compte.

Questions fréquentes

Faut-il mettre la catégorie dans l'URL ?

Rarement sur un site programmatique. La taxonomie d'un lot généré évolue, et chaque changement de catégorie imposerait des redirections. Le fil d'Ariane balisé transmet la hiérarchie sans figer le chemin d'URL.

Peut-on changer un slug après publication ?

C'est possible avec une redirection 301, mais chaque changement fait perdre un peu de signal et casse les liens non mis à jour. Mieux vaut figer le slug à la création et laisser le titre évoluer librement.

Les URL courtes se positionnent-elles mieux ?

Il n'existe pas de bonus direct pour la longueur d'URL. En revanche, une URL courte et lisible est mieux partagée et mieux cliquée, ce qui produit un effet indirect.