Files
2026-03-14 16:30:32 +00:00

119 lines
4.4 KiB
ApacheConf

# =============================================================================
# .htaccess — L'Électron Rare (www.lelectronrare.fr)
# Hébergement mutualisé OVH (Apache)
# =============================================================================
# ----------------------------------------------------------------------
# 1. Redirections HTTPS et www
# ----------------------------------------------------------------------
RewriteEngine On
# Forcer HTTPS
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# Rediriger non-www vers www
RewriteCond %{HTTP_HOST} ^lelectronrare\.fr$ [NC]
RewriteRule ^ https://www.lelectronrare.fr%{REQUEST_URI} [L,R=301]
# ----------------------------------------------------------------------
# 2. En-têtes de sécurité
# ----------------------------------------------------------------------
<IfModule mod_headers.c>
# HSTS — forcer HTTPS pendant 1 an, inclure les sous-domaines
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
# Empêcher le sniffing MIME
Header always set X-Content-Type-Options "nosniff"
# Interdire l'affichage dans une iframe (protection clickjacking)
Header always set X-Frame-Options "DENY"
# Politique de référent
Header always set Referrer-Policy "strict-origin-when-cross-origin"
# Politique de permissions — désactiver géolocalisation, caméra, micro
Header always set Permissions-Policy "geolocation=(), camera=(), microphone=()"
</IfModule>
# ----------------------------------------------------------------------
# 3. Compression (gzip / deflate)
# OVH active souvent mod_deflate, mais on s'assure que c'est bien là
# ----------------------------------------------------------------------
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/json
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE image/svg+xml
AddOutputFilterByType DEFLATE application/font-woff
AddOutputFilterByType DEFLATE application/font-woff2
</IfModule>
# ----------------------------------------------------------------------
# 4. Mise en cache des ressources statiques
# ----------------------------------------------------------------------
<IfModule mod_expires.c>
ExpiresActive On
# Par défaut : 1 heure
ExpiresDefault "access plus 1 hour"
# Ressources Astro hachées (/_astro/) — cache très long, immutable
# Géré via la directive FilesMatch ci-dessous
# Images — 1 mois
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/webp "access plus 1 month"
ExpiresByType image/avif "access plus 1 month"
ExpiresByType image/svg+xml "access plus 1 month"
ExpiresByType image/x-icon "access plus 1 year"
# Polices — 1 an
ExpiresByType font/woff "access plus 1 year"
ExpiresByType font/woff2 "access plus 1 year"
ExpiresByType application/font-woff "access plus 1 year"
ExpiresByType application/font-woff2 "access plus 1 year"
ExpiresByType font/ttf "access plus 1 year"
ExpiresByType font/otf "access plus 1 year"
# CSS et JS — 1 semaine (hors _astro)
ExpiresByType text/css "access plus 1 week"
ExpiresByType application/javascript "access plus 1 week"
ExpiresByType text/javascript "access plus 1 week"
</IfModule>
# Fichiers Astro hachés — cache immutable 1 an
# Les noms de fichiers contiennent un hash, donc le cache long est sûr
<IfModule mod_headers.c>
<If "%{REQUEST_URI} =~ m#^/_astro/#">
Header set Cache-Control "public, max-age=31536000, immutable"
</If>
</IfModule>
# ----------------------------------------------------------------------
# 5. Page d'erreur 404
# Redirige vers index.html (comportement SPA)
# ----------------------------------------------------------------------
ErrorDocument 404 /index.html
# ----------------------------------------------------------------------
# 6. Divers
# ----------------------------------------------------------------------
# Désactiver la signature du serveur
ServerSignature Off
# Empêcher le listage des répertoires
Options -Indexes