Files
annu-kute-ced/conf/.htaccess.sample
T

79 lines
2.2 KiB
Plaintext
Raw Normal View History

2025-07-21 13:15:35 +04:00
RewriteEngine On
# ======================
# SÉCURITÉ
# ======================
# Bloquer l'accès aux fichiers de configuration
2025-07-21 13:33:23 +04:00
<Files ~ "\.(inc|conf|config|local)$">
Require all denied
</Files>
# Bloquer les fichiers PHP dans includes/
<Files "includes/*.php">
2025-07-21 13:15:35 +04:00
Require all denied
</Files>
# Protéger les répertoires sensibles
RewriteRule ^(includes|cache|docs|conf)/ - [F,L]
2025-07-21 13:15:35 +04:00
# Bloquer les fichiers samples et backups
<FilesMatch "\.(sample|bak|backup|log|tmp)$">
Require all denied
</FilesMatch>
# Bloquer les artefacts de documentation à la racine web
# (DEPLOY.adoc/html/pdf, README.adoc…) : ils divulguent le plan
# d'infrastructure et ne doivent jamais être servis s'ils sont copiés
# sur l'hébergement. [^/]+ = fichiers à la racine uniquement, les
# éventuels .html légitimes en sous-répertoire restent servis.
RewriteRule ^[^/]+\.(adoc|html|pdf)$ - [F,L,NC]
2025-07-21 13:15:35 +04:00
# Empêcher l'exploration des répertoires
Options -Indexes
# Bloquer l'accès aux fichiers cachés
<FilesMatch "^\.">
Require all denied
</FilesMatch>
# ======================
# RÉÉCRITURE D'URL
# ======================
# Masquer l'extension .php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
# Rediriger les URLs avec .php vers les URLs sans extension
# Sauf /ajax/ : un 301 transformerait le POST en GET et ferait perdre le token CSRF.
2025-07-21 13:15:35 +04:00
RewriteCond %{THE_REQUEST} /([^.]+)\.php [NC]
RewriteCond %{REQUEST_URI} !^/ajax/ [NC]
2025-07-21 13:15:35 +04:00
RewriteRule ^ /%1 [NC,L,R=301]
# Pour accéder à page.php via /page
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^([^/]+)$ $1.php [L]
# ======================
# HTTPS
# ======================
# Force HTTPS
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{HTTPS} !on
RewriteRule ^(.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# ======================
# CACHE
# ======================
# Le Service Worker et le manifest ne doivent pas être cachés longtemps :
# le navigateur doit pouvoir détecter les nouvelles versions du site.
<FilesMatch "^(sw\.js|site\.webmanifest)$">
<IfModule mod_headers.c>
Header set Cache-Control "no-cache, must-revalidate"
</IfModule>
</FilesMatch>