URLs fichiers : normaliser en /file/{slug}/{nom} comme /post/{slug} #28

Open
opened 2026-05-13 22:09:43 +00:00 by cedricAbonnel · 0 comments
Owner

Problème

Les URLs des fichiers attachés aux articles utilisent encore UUID et query string :

/file?uuid=11186836-bbac-4054-82db-a3bfed14a274&name=cover.jpg

Alors que les articles ont déjà des URLs propres :

/post/souverainete-numerique-le-paradoxe-d-orange-face-aux-clouds-americains

Cible

Adopter le même schéma pour les fichiers :

/file/{slug}/{nom-de-fichier}

Exemples :

/file/souverainete-numerique-le-paradoxe-d-orange-face-aux-clouds-americains/cover.jpg
/file/souverainete-numerique-le-paradoxe-d-orange-face-aux-clouds-americains/letsencrypt-shorter-certs-certbot

Implémentation

1. .htaccess

Ajouter une règle de réécriture :

RewriteRule ^file/([a-z0-9][a-z0-9-]*)/([^/]+)/?$ /file.php?slug=$1&name=$2 [L,QSA]

2. public/file.php

Accepter slug + name au lieu de uuid + name :

  • Charger ArticleManager
  • Résoudre le slug en UUID via getBySlug()
  • Servir le fichier depuis le chemin UUID habituel (data/{uuid}/files/{name})

3. Génération des URLs

Partout où une URL de fichier est construite (notamment ArticleManager::resolveFileUrls()), passer de :

/file?uuid={uuid}&name={name}

à :

/file/{slug}/{name}

4. Compatibilité

Garder un redirect 301 sur les anciennes URLs /file?uuid=…&name=… vers la nouvelle forme, le temps que les liens existants (RSS, articles publiés) soient mis à jour.


Migré depuis varlog#39

## Problème Les URLs des fichiers attachés aux articles utilisent encore UUID et query string : ``` /file?uuid=11186836-bbac-4054-82db-a3bfed14a274&name=cover.jpg ``` Alors que les articles ont déjà des URLs propres : ``` /post/souverainete-numerique-le-paradoxe-d-orange-face-aux-clouds-americains ``` ## Cible Adopter le même schéma pour les fichiers : ``` /file/{slug}/{nom-de-fichier} ``` Exemples : ``` /file/souverainete-numerique-le-paradoxe-d-orange-face-aux-clouds-americains/cover.jpg /file/souverainete-numerique-le-paradoxe-d-orange-face-aux-clouds-americains/letsencrypt-shorter-certs-certbot ``` ## Implémentation ### 1. `.htaccess` Ajouter une règle de réécriture : ```apache RewriteRule ^file/([a-z0-9][a-z0-9-]*)/([^/]+)/?$ /file.php?slug=$1&name=$2 [L,QSA] ``` ### 2. `public/file.php` Accepter `slug` + `name` au lieu de `uuid` + `name` : - Charger `ArticleManager` - Résoudre le slug en UUID via `getBySlug()` - Servir le fichier depuis le chemin UUID habituel (`data/{uuid}/files/{name}`) ### 3. Génération des URLs Partout où une URL de fichier est construite (notamment `ArticleManager::resolveFileUrls()`), passer de : ``` /file?uuid={uuid}&name={name} ``` à : ``` /file/{slug}/{name} ``` ### 4. Compatibilité Garder un redirect 301 sur les anciennes URLs `/file?uuid=…&name=…` vers la nouvelle forme, le temps que les liens existants (RSS, articles publiés) soient mis à jour. --- *Migré depuis [varlog#39](https://git.abonnel.fr/cedricAbonnel/varlog/issues/39)*
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: cedricAbonnel/folio#28