<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /

    # Redirection HTTP vers HTTPS (décommenter en production)
    # RewriteCond %{HTTPS} off
    # RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

    # Ne pas réécrire les fichiers/dossiers existants
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d

    # Tout envoyer vers index.php
    RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>

# MIME type pour les extensions Firefox signees (XPI).
# Sans ce Content-Type, Firefox telecharge le fichier au lieu de declencher
# le dialogue d'installation natif. Indispensable pour que le bouton
# "Installer dans Firefox" de /settings?tab=extension fonctionne.
<IfModule mod_mime.c>
    AddType application/x-xpinstall .xpi
</IfModule>

# Compression
<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/plain text/css
    AddOutputFilterByType DEFLATE application/javascript application/json
    AddOutputFilterByType DEFLATE image/svg+xml
</IfModule>

# Cache navigateur
<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresByType text/css "access plus 1 month"
    ExpiresByType application/javascript "access plus 1 month"
    ExpiresByType image/png "access plus 1 year"
    ExpiresByType image/jpeg "access plus 1 year"
    ExpiresByType image/webp "access plus 1 year"
    ExpiresByType image/svg+xml "access plus 1 year"
    ExpiresByType font/woff2 "access plus 1 year"
</IfModule>

# Cache-Control explicite pour assets statiques
<IfModule mod_headers.c>
    <FilesMatch "\.(css|js|png|jpe?g|gif|webp|avif|svg|ico|woff2?)$">
        Header set Cache-Control "public, max-age=2592000, immutable"
    </FilesMatch>
</IfModule>

# Sécurité - empêcher le listing de répertoires
Options -Indexes

# Protéger les fichiers sensibles
<FilesMatch "\.(php|env|log)$">
    <If "%{REQUEST_URI} != '/index.php'">
        Require all denied
    </If>
</FilesMatch>
# === Bloc de sécurité (généré par site-deploy) ===
# Bloque l'accès HTTP à :
#  - Rotations .old créées avant écrasement d'un fichier sensible (.env.old, etc.)
#  - Backups éditeurs (.bak, .orig, .swp, .swo)
#  - Fichiers .env*  (secrets app — défense en profondeur, le déploiement les
#    sort déjà du webroot dans la mesure du possible)
#  - Fichiers .git* (repo VCS résiduels si déployé par accident)
<FilesMatch "(\.old|\.bak|\.orig|\.swp|\.swo)$|^\.env|^\.git">
    Require all denied
</FilesMatch>
