# .htaccess pour Breizhcalendar

# Activer le moteur de réécriture
RewriteEngine On

# Forcer HTTPS (redondant avec le vhost mais en double sécurité)
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# Page d'accueil par défaut
DirectoryIndex index-api.html index.html

# Protection des fichiers sensibles
<FilesMatch "^\.">
    Require all denied
</FilesMatch>

# Protection de events.json contre l'accès direct
<Files "events.json">
    # Autorisé uniquement pour les requêtes locales (PHP)
    # Les requêtes AJAX passeront par api.php
</Files>

# Types MIME
AddType application/json .json
AddType text/html .html
AddType application/x-httpd-php .php

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

# Cache navigateur
<IfModule mod_expires.c>
    ExpiresActive On
    
    # HTML (pas de cache)
    ExpiresByType text/html "access plus 0 seconds"
    
    # CSS et JS (1 semaine)
    ExpiresByType text/css "access plus 1 week"
    ExpiresByType application/javascript "access plus 1 week"
    
    # Images (1 mois)
    ExpiresByType image/png "access plus 1 month"
    ExpiresByType image/jpg "access plus 1 month"
    ExpiresByType image/jpeg "access plus 1 month"
    ExpiresByType image/gif "access plus 1 month"
    ExpiresByType image/webp "access plus 1 month"
    
    # Fonts (1 an)
    ExpiresByType font/woff2 "access plus 1 year"
</IfModule>

# Headers de sécurité supplémentaires
<IfModule mod_headers.c>
    # Protection XSS
    Header set X-XSS-Protection "1; mode=block"
    
    # Pas de sniffing de type MIME
    Header set X-Content-Type-Options "nosniff"
    
    # Politique de référent
    Header set Referrer-Policy "no-referrer-when-downgrade"
    
    # Permissions
    Header set Permissions-Policy "geolocation=(), microphone=(), camera=()"
</IfModule>

# Optimisation PHP
<IfModule mod_php.c>
    php_value upload_max_filesize 10M
    php_value post_max_size 10M
    php_value max_execution_time 30
    php_value max_input_time 30
</IfModule>

# Protection contre les injections
<IfModule mod_rewrite.c>
    # Bloquer les requêtes suspectes
    RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC,OR]
    RewriteCond %{QUERY_STRING} GLOBALS(=|[|%[0-9A-Z]{0,2}) [OR]
    RewriteCond %{QUERY_STRING} _REQUEST(=|[|%[0-9A-Z]{0,2})
    RewriteRule .* - [F,L]
</IfModule>

# Désactiver le listing des répertoires
Options -Indexes

# Personnalisation des pages d'erreur
ErrorDocument 404 /index-api.html
ErrorDocument 403 /index-api.html
