Table des matières
Sécuriser son site Web sous Apache
Définition du fichier .htaccess
Le fichier .htaccess est un fichier de configuration utilisé par le serveur Apache. Il permet de contrôler de nombreux aspects du comportement du serveur pour un répertoire spécifique, comme la réécriture d’URL, les redirections, la restriction d’accès ou encore la gestion des erreurs personnalisées.
Documentation officielle Apache : https://httpd.apache.org/docs/current/howto/htaccess.html
Visibilité du contenu d'un dossier
Par défaut, Apache peut afficher le contenu d’un dossier si aucun fichier index (comme index.html ou index.php) n’est présent.
Pour éviter cela :
Options -Indexes
Cela empêche les visiteurs de voir la liste des fichiers d’un dossier sans index.
Fichier par défaut
Apache sert généralement un fichier par défaut (comme index.html) lorsqu’un utilisateur accède à un répertoire.
Pour spécifier un fichier personnalisé :
DirectoryIndex accueil.html
Cela forcera Apache à servir accueil.html en priorité.
Blocage d'accès à un dossier
Pour empêcher l’accès à un dossier spécifique :
<Files "*"> Order Allow,Deny Deny from all </Files>
Ou de manière plus moderne (Apache 2.4+) :
Require all denied
Accès authentifié
Pour restreindre l’accès à un dossier avec un mot de passe :
AuthType Basic AuthName "Zone protégée" AuthUserFile /chemin/vers/.htpasswd Require valid-user
💡 Le fichier .htpasswd contient les identifiants et mots de passe chiffrés. Tu peux le générer avec la commande htpasswd.
Pages d'erreurs personnalisées
Tu peux personnaliser les messages d’erreur (404, 403, etc.) :
ErrorDocument 404 /erreurs/404.html ErrorDocument 403 /erreurs/403.html
Cela redirige les erreurs vers des pages spécifiques plus esthétiques et informatives.
Réécriture d'URL
Pour simplifier les URL ou créer des routes plus propres :
RewriteEngine On RewriteRule ^page/([0-9]+)$ page.php?id=$1 [L]
⚠️ Le module mod_rewrite doit être activé sur le serveur Apache.
Forcer le https
Pour rediriger toutes les connexions HTTP vers HTTPS :
RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Cela garantit une connexion sécurisée entre l’utilisateur et le site.
