# vercel.json

Host applique le routage de ton site comme Vercel. Pour un site statique sans build, il lit `vercel.json` à la racine du dossier envoyé. Pour un site construit avec `vercel build`, il lit `.vercel/output/config.json`. Les options décrites ici sont converties par la bibliothèque de routage de Vercel, avec les mêmes règles.

## Options prises en charge

| Option          | Effet                                                                      |
| --------------- | -------------------------------------------------------------------------- |
| `cleanUrls`     | Sert `/a-propos` pour `a-propos.html`, sans extension                      |
| `trailingSlash` | Ajoute ou retire la barre oblique finale, par redirection                  |
| `redirects`     | Redirige un chemin vers un autre, avec le code 301, 302, 307 ou 308        |
| `rewrites`      | Sert un autre fichier, ou une URL externe, sans changer l’adresse affichée |
| `headers`       | Ajoute des en-têtes de réponse à certains chemins                          |
| `routes`        | Le format de routes historique de Vercel, pour les cas avancés             |

Chaque liste (`redirects`, `rewrites`, `headers`, `routes`) accepte 1024 entrées au plus.

## Exemple

```json
{
  "cleanUrls": true,
  "redirects": [
    { "source": "/blog/:slug", "destination": "/articles/:slug", "permanent": true }
  ],
  "headers": [
    {
      "source": "/assets/(.*)",
      "headers": [
        { "key": "Cache-Control", "value": "public, max-age=31536000, immutable" }
      ]
    }
  ]
}
```

## Build Output API

Pour un site envoyé avec `vercel deploy --prebuilt`, Host lit `.vercel/output/config.json` (version 3) et sert le dossier `.vercel/output/static`. Les routes passent par les mêmes phases que chez Vercel : routes principales, système de fichiers, `miss`, `rewrite`, puis `error`.

Les conditions `has` et `missing` sont prises en compte. Elles portent sur l’hôte, un en-tête, un cookie ou un paramètre.

## Ce qui est filtré

- Les en-têtes `set-cookie` d’une route ne sont pas servis.
- Les fichiers et dossiers qui commencent par un point (`.env`, `.git`) ne sont jamais servis. Seul `.well-known` fait exception.
- Une expression régulière jugée dangereuse ou trop longue fait échouer la publication. Le message désigne la route en cause. Un exemple de motif dangereux : des quantificateurs imbriqués, comme `(a+)+`.

## Pages introuvables

Un fichier `404.html` à la racine du site sert de page d’erreur. Sans lui, Host affiche sa propre page 404.
