Skip to main content
Voir en Markdown

Routage et chemins

Le path d'une page est l'URL à laquelle elle répond. Il est comparé littéralement, sauf s'il contient un segment :param ou *, auquel cas il devient un motif.

Formes de chemin

Forme Exemple Correspond à
Racine / La page d'accueil.
Statique /about Ce chemin exact, et rien d'autre.
Imbriquée /settings/billing Un nombre quelconque de segments statiques.
Dynamique /blog/:slug Un segment, capturé sous le nom slug.
Catch-all /docs/:rest* Le reste du chemin, capturé sous rest — doit être le dernier segment.
Joker /files/* Tout ce qui se trouve sous /files/, sans nom de capture.

Un chemin doit correspondre à ^/[a-z0-9-_/:*]*$ : il commence par /, et seules les minuscules sont admises. /users/:userId est rejeté — écrivez /users/:userid, ou mieux, /users/:id.

Segments dynamiques

Un segment :param capture exactement un segment de chemin — jamais au-delà d'un /. /blog/:slug correspond à /blog/hello mais pas à /blog/2026/hello ; utilisez /blog/:slug* pour ce dernier cas.

Les routes dynamiques sont généralement associées à un bloc collection, afin qu'une seule définition de page génère une route par enregistrement :

pages:
  - name: Blog Post
    path: /blog/:slug
    collection: { table: posts, slugField: slug }
    components:
      - { type: text, tag: h1, content: '$record.title' }

Voir Collections et markdown pour le contrat de collection.

Routes de détail d'enregistrement

Pour servir un seul enregistrement à une URL sans générer une route par enregistrement, associez un segment dynamique à une source de données en mode single. param nomme le segment de chemin d'où lire l'identifiant :

pages:
  - name: Task
    path: /tasks/:id
    dataSource:
      table: tasks
      mode: single
      param: id
    components:
      - { type: text, tag: h1, content: '$record.title' }
      - { type: text, content: '$record.description' }

Une requête dont le paramètre ne correspond à aucun enregistrement renvoie un 404.

Le segment de langue

Sovrium ne préfixe pas vos chemins à votre place. Lorsque app.languages est configuré, le runtime lit le premier segment du chemin et, s'il correspond à un code de langue configuré, celui-ci devient la langue active pour la résolution des traductions $t:.

Les routes localisées sont donc déclarées explicitement — une page par langue, chacune portant son propre segment :

pages:
  - { name: home-en, path: /en, components: [{ type: hero, content: 'hero.title' }] }
  - { name: home-fr, path: /fr, components: [{ type: hero, content: 'hero.title' }] }

Ordre de résolution

Une requête entrante est traitée par le premier élément correspondant :

  1. Un fichier réel du répertoire public.
  2. Une règle de redirection.
  3. Un chemin de page.
  4. Le fourre-tout 404.

Pages connexes

Dernière mise à jour 27 juillet 2026

Cette documentation a été rédigée avec de l'IA : des erreurs ou du contenu obsolète sont donc possibles. Sovrium est en bêta — les contributions et corrections sont les bienvenues.

Construit avec Sovrium