# =====================================================================
#  MICRONICS SYSTEMS — Protections du site
# =====================================================================
#  Ce fichier bloque l'acces public a des fichiers qui ne doivent pas
#  etre lisibles depuis un navigateur.
#
#  Si ton hebergeur n'utilise pas Apache, ce fichier sera simplement
#  ignore : dans ce cas, mets $JOURNAL = false; dans envoi-devis.php.
# =====================================================================

# Le journal des demandes contient les coordonnees de tes clients.
<Files "demandes-devis.log">
  Require all denied
</Files>

# Compatibilite avec les serveurs Apache 2.2 (anciens hebergements)
<IfModule !mod_authz_core.c>
  <Files "demandes-devis.log">
    Order allow,deny
    Deny from all
  </Files>
</IfModule>

# Interdit aussi l'acces a un eventuel test.php oublie
<Files "test.php">
  Require all denied
</Files>


# =====================================================================
#  PERFORMANCE — ajoute le 26/08/2026
#  Tout est entoure de <IfModule> : si l'hebergeur n'a pas le module,
#  la section est simplement ignoree, rien ne casse.
#  Pour revenir en arriere : supprimer tout ce qui suit cette ligne.
# =====================================================================

# ---------------------------------------------------------------------
#  1. COMPRESSION — le serveur envoie le texte compresse
#     Les pages passent d'environ 195 Ko a 57 Ko.
# ---------------------------------------------------------------------
<IfModule mod_deflate.c>
  AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css
  AddOutputFilterByType DEFLATE application/javascript application/x-javascript text/javascript
  AddOutputFilterByType DEFLATE application/json application/manifest+json
  AddOutputFilterByType DEFLATE image/svg+xml application/xml application/rss+xml
  AddOutputFilterByType DEFLATE font/ttf font/otf application/vnd.ms-fontobject

  # Les images et videos sont deja compressees : ne pas y toucher.
  SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png|webp|ico|mp4|zip|gz|pdf)$ no-gzip dont-vary
</IfModule>

# Certains hebergeurs recents proposent Brotli, plus efficace encore.
<IfModule mod_brotli.c>
  AddOutputFilterByType BROTLI_COMPRESS text/html text/css text/plain text/xml
  AddOutputFilterByType BROTLI_COMPRESS application/javascript application/json
  AddOutputFilterByType BROTLI_COMPRESS image/svg+xml
</IfModule>

# ---------------------------------------------------------------------
#  2. CACHE NAVIGATEUR — evite de retelecharger ce qui n'a pas change
#     Les pages HTML ne sont PAS mises en cache : vos mises a jour
#     restent visibles immediatement.
# ---------------------------------------------------------------------
<IfModule mod_expires.c>
  ExpiresActive On

  # Pages : jamais en cache, pour que les corrections soient vues tout de suite
  ExpiresByType text/html                     "access plus 0 seconds"

  # Images : un mois. Si vous remplacez une image, changez son nom de fichier.
  ExpiresByType image/jpeg                    "access plus 1 month"
  ExpiresByType image/png                     "access plus 1 month"
  ExpiresByType image/webp                    "access plus 1 month"
  ExpiresByType image/svg+xml                 "access plus 1 month"
  ExpiresByType image/x-icon                  "access plus 1 year"
  ExpiresByType image/vnd.microsoft.icon      "access plus 1 year"

  # Videos : six mois, ce sont les plus lourdes a recharger
  ExpiresByType video/mp4                     "access plus 6 months"

  # Polices et manifeste
  ExpiresByType font/woff2                    "access plus 1 year"
  ExpiresByType application/manifest+json     "access plus 1 week"

  # Feuilles de style et scripts externes, si vous en ajoutez un jour
  ExpiresByType text/css                      "access plus 1 week"
  ExpiresByType application/javascript        "access plus 1 week"
</IfModule>

<IfModule mod_headers.c>
  # Les pages doivent toujours etre revalidees aupres du serveur
  <FilesMatch "\.(html|php)$">
    Header set Cache-Control "no-cache, must-revalidate"
  </FilesMatch>
  # Les medias peuvent etre gardes sans revalidation
  <FilesMatch "\.(jpg|jpeg|png|webp|svg|ico|mp4|woff2)$">
    Header set Cache-Control "public, max-age=2592000"
  </FilesMatch>
</IfModule>

# ---------------------------------------------------------------------
#  3. TYPES DE FICHIERS — certains hebergeurs anciens les ignorent,
#     ce qui empeche les images WebP et le manifeste de s'afficher.
# ---------------------------------------------------------------------
<IfModule mod_mime.c>
  AddType image/webp                    .webp
  AddType application/manifest+json     .webmanifest
  AddType image/svg+xml                 .svg
  AddType video/mp4                     .mp4
  AddType font/woff2                    .woff2
</IfModule>

# ---------------------------------------------------------------------
#  4. PAGE D'ACCUEIL PAR DEFAUT
# ---------------------------------------------------------------------
<IfModule mod_dir.c>
  DirectoryIndex index.html index.php
</IfModule>
