# ============================================================
#  Lionel & Ariane — configuration Apache (o2switch / cPanel)
# ============================================================

# Page d'accueil et page d'erreur
DirectoryIndex index.html
ErrorDocument 404 /404.html
# Si le site est installé dans un sous-dossier (ex. /mariage/),
# remplacer la ligne ci-dessus par : ErrorDocument 404 /mariage/404.html

# Pas de listing des dossiers
Options -Indexes

# ---------- HTTPS obligatoire ----------
# (activer d'abord le certificat SSL gratuit dans cPanel)
<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{HTTPS} !=on
  RewriteCond %{HTTP:X-Forwarded-Proto} !https
  RewriteCond %{REQUEST_URI} !^/\.well-known/acme-challenge/
  RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

  # Facultatif — forcer l'adresse sans « www » (décommenter les 2 lignes)
  # RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
  # RewriteRule ^ https://%1%{REQUEST_URI} [L,R=301]

  # Bloquer l'accès aux fichiers cachés (.git, .env…) sauf .well-known
  RewriteRule "(^|/)\.(?!well-known/)" - [F]
</IfModule>

# ---------- Types MIME ----------
<IfModule mod_mime.c>
  AddType image/svg+xml          .svg
  AddType image/webp             .webp
  AddType font/woff2             .woff2
  AddType audio/mpeg             .mp3
  AddType application/manifest+json .webmanifest
  AddCharset utf-8 .html .css .js .svg .txt
</IfModule>

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

# ---------- Cache navigateur ----------
<IfModule mod_expires.c>
  ExpiresActive On
  ExpiresDefault                       "access plus 1 week"
  ExpiresByType text/html              "access plus 0 seconds"
  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/svg+xml          "access plus 1 month"
  ExpiresByType image/webp             "access plus 1 month"
  ExpiresByType image/jpeg             "access plus 1 month"
  ExpiresByType image/png              "access plus 1 month"
  ExpiresByType audio/mpeg             "access plus 1 month"
</IfModule>
# CSS/JS sont versionnés (?v=1 dans index.html) : incrémenter après chaque modification.

# ---------- En-têtes de sécurité ----------
<IfModule mod_headers.c>
  Header always set X-Content-Type-Options "nosniff"
  Header always set Referrer-Policy "strict-origin-when-cross-origin"
  Header always set X-Frame-Options "SAMEORIGIN"
  Header always set Permissions-Policy "camera=(), microphone=(), geolocation=()"
  Header always set X-Robots-Tag "noindex, nofollow"
  <FilesMatch "\.(html)$">
    Header set Cache-Control "no-cache"
  </FilesMatch>
  <FilesMatch "\.(woff2)$">
    Header set Access-Control-Allow-Origin "*"
  </FilesMatch>
</IfModule>

# Le mode d'emploi (LISEZMOI.md) n'est pas servi aux visiteurs
<FilesMatch "\.md$">
  Require all denied
</FilesMatch>
