# Reecriture SPA : toute URL sous /extranet qui ne designe pas un fichier
# existant renvoie index.html. Sans cette regle, un rechargement direct sur
# /extranet/labo/vente/produit produirait un 404.
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /extranet/
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /extranet/index.html [L]
</IfModule>

# Politique de cache. Elle repose entierement sur une distinction : un fichier
# dont le nom porte l'empreinte de son contenu ne change jamais sans changer
# d'URL, les autres si.
<IfModule mod_headers.c>

    # 1. Actifs produits par Vite (assets/index-BZsMBTf2.js...). Leur nom suit
    #    leur contenu : on peut les figer un an sans risque, et c'est ce qui
    #    evite de retelecharger l'application a chaque visite.
    #
    #    Le reglage vise le dossier assets/ et lui seul. Il portait auparavant
    #    sur toutes les extensions (.js, .css, .png...), ce qui figeait aussi
    #    favicon.png — servi depuis public/ sous un nom fixe : le remplacer
    #    n'aurait jamais atteint un poste deja venu.
    SetEnvIf Request_URI "/assets/" ACTIF_EMPREINTE
    Header set Cache-Control "public, max-age=31536000, immutable" env=ACTIF_EMPREINTE

    # 2. index.html : jamais fige. C'est lui qui nomme les actifs a charger,
    #    donc le seul fichier par lequel une mise en production se propage. Le
    #    navigateur le revalide a chaque chargement — une requete conditionnelle,
    #    qui repond 304 tant que rien n'a bouge.
    <FilesMatch "^index\.html$">
        Header set Cache-Control "no-cache, must-revalidate"
    </FilesMatch>

    # 3. Fichiers servis a la racine sous un nom fixe : caches une heure, puis
    #    reverifies. Assez pour eviter une requete a chaque page, assez court
    #    pour qu'un remplacement se voie le jour meme.
    <FilesMatch "^(favicon\.png|.*\.(webmanifest|txt|ico))$">
        Header set Cache-Control "public, max-age=3600, must-revalidate"
    </FilesMatch>

</IfModule>
