# ============================================================
#  Cache navigateur et compression des fichiers statiques
# ============================================================
# Les fichiers CSS/JS et les bibliothèques sont appelés avec un numéro de
# version (?v=…) qui change à chaque modification : on peut donc demander
# au navigateur de les garder longtemps sans risque de version périmée.

<IfModule mod_headers.c>
    <FilesMatch "\.(css|js|woff2?|ttf)$">
        Header set Cache-Control "public, max-age=31536000, immutable"
    </FilesMatch>
    # Photos d'articles et logos : noms uniques, gardés 30 jours
    <FilesMatch "\.(jpe?g|png|gif|webp|svg)$">
        Header set Cache-Control "public, max-age=2592000"
    </FilesMatch>
</IfModule>

<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresByType text/css "access plus 1 year"
    ExpiresByType application/javascript "access plus 1 year"
    ExpiresByType text/javascript "access plus 1 year"
    ExpiresByType font/woff2 "access plus 1 year"
    ExpiresByType image/jpeg "access plus 30 days"
    ExpiresByType image/png "access plus 30 days"
    ExpiresByType image/webp "access plus 30 days"
</IfModule>

<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/css application/javascript text/javascript image/svg+xml
</IfModule>

# Aucun script PHP ne doit s'exécuter depuis les dossiers de fichiers envoyés
<FilesMatch "\.(php|phtml|php\d)$">
    <IfModule mod_authz_core.c>
        Require all denied
    </IfModule>
    <IfModule !mod_authz_core.c>
        Deny from all
    </IfModule>
</FilesMatch>
