Catégorie : serveur web
Étiquettes : apache, htaccess, rewrite, sécurité
1. Introduction
Dans ton parcours en BTS CIEL ou SIO, tu vas très souvent manipuler des serveurs web, notamment Apache HTTP Server. La configuration avancée d’Apache constitue une compétence essentielle, surtout lorsque tu travailles sur des hébergements mutualisés ou des environnements sans accès root.
Le fichier .htaccess te permet d’agir directement sur le comportement du serveur web, sans modifier la configuration globale. Tu peux gérer des redirections, renforcer la sécurité, contrôler l’accès aux ressources ou encore optimiser les performances.
L’objectif de cette fiche consiste à te rendre autonome sur les usages avancés de .htaccess, avec une approche concrète et orientée terrain.
2. Sommaire
- Introduction
- Principe et fonctionnement
- Synthèse Markdown
- Fichiers importants
- Configuration complète
- Explications détaillées
- Exemples concrets
- Commandes et dépannage
- Logs et analyse
- Bonnes pratiques
- Pour aller plus loin
- Liens utiles
- TP d’entraînement
3. Synthèse Markdown pour ta fiche bristol
# .htaccess Apache - fiche rapide
## Emplacement
/var/www/html/.htaccess
## Activer dans Apache
a2enmod rewrite
AllowOverride All
## Redirection HTTP → HTTPS
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
## Bloquer une IP
Require not ip 192.168.1.100
## Protection fichier sensible
<Files "config.php">
Require all denied
</Files>
## Réécriture URL (SEO)
RewriteRule ^article/(.*)$ article.php?id=$1 [L]
## Désactiver listing répertoire
Options -Indexes
## Authentification basique
AuthType Basic
AuthName "Zone protégée"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
4. Fichiers importants
Voici les fichiers clés à connaître :
/etc/apache2/apache2.conf
/etc/apache2/sites-available/000-default.conf
/var/www/html/.htaccess
/etc/apache2/.htpasswd
/var/log/apache2/access.log
/var/log/apache2/error.log
5. Bloc de configuration complet
# Activation du moteur de réécriture
RewriteEngine On
# Redirection HTTP vers HTTPS
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# Désactivation du listing
Options -Indexes
# Protection des fichiers sensibles
<FilesMatch "(config|\.env|\.htaccess)">
Require all denied
</FilesMatch>
# Bloquer certaines IP
Require all granted
Require not ip 192.168.1.100
# Réécriture URL propre
RewriteRule ^article/([0-9]+)$ article.php?id=$1 [L,QSA]
# Authentification
AuthType Basic
AuthName "Accès restreint"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
6. Explications détaillées
Activation de .htaccess
Tu dois autoriser son utilisation dans Apache :
sudo nano /etc/apache2/apache2.conf
Cherche :
<Directory /var/www/>
AllowOverride None
</Directory>
Remplace par :
AllowOverride All
Recharge ensuite :
sudo systemctl reload apache2
Moteur Rewrite
RewriteEngine On
Active le module de réécriture d’URL.
Redirection HTTPS
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond: condition%{HTTPS} off: si HTTPR=301: redirection permanenteL: dernière règle
Sécurité fichiers
<FilesMatch "(config|\.env)">
Require all denied
</FilesMatch>
Empêche l’accès aux fichiers sensibles.
Gestion des accès
Require not ip 192.168.1.100
Bloque une IP spécifique.
Réécriture URL
RewriteRule ^article/([0-9]+)$ article.php?id=$1
([0-9]+): capture numérique$1: variable récupérée
7. Exemples concrets
Cas 1 : sécuriser un WordPress
- Bloquer wp-config.php
- Forcer HTTPS
- Désactiver listing
Cas 2 : site pédagogique
- URL propre :
/cours/linux - Protection par mot de passe
Cas 3 : API interne
- Restreindre par IP
- Journaliser accès
8. Commandes et dépannage
Activer modules Apache
sudo a2enmod rewrite
Active le module rewrite.
Tester configuration
sudo apache2ctl configtest
Vérifie les erreurs.
Recharger Apache
sudo systemctl reload apache2
Vérifier port
Apache écoute sur :
TCP 80 (HTTP)
TCP 443 (HTTPS)
Pare-feu UFW
Cas 1 : serveur web public
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
Cas 2 : serveur interne uniquement
sudo ufw allow from 192.168.1.0/24 to any port 80
9. Logs et analyse
Activer logs
Dans :
/etc/apache2/apache2.conf
Logs principaux
/var/log/apache2/access.log
/var/log/apache2/error.log
Lecture des logs
tail -f /var/log/apache2/error.log
Ce que tu vois dedans
- erreurs de syntaxe
.htaccess - accès refusés (403)
- redirections
- IP client
Faire parler les logs
grep "403" access.log
Analyse les refus.
grep "Rewrite" error.log
Debug rewrite.
10. Bonnes pratiques
- Limite l’usage de
.htaccess(performance) - Préfère config Apache globale si possible
- Protège les fichiers sensibles
- Teste chaque règle
- Documente tes règles
11. Pour aller plus loin
Travaille avec :
- VirtualHost Apache
- ModSecurity (WAF)
- Reverse proxy
12. Liens vers ressources
- Documentation officielle Apache :
https://httpd.apache.org/docs/2.4/howto/htaccess.html
→ Documentation complète sur.htaccess - Debian Apache config :
https://wiki.debian.org/Apache
→ Bonnes pratiques Debian - Ubuntu Apache :
https://doc.ubuntu-fr.org/apache2
→ Guide francophone clair - OpenClassrooms Apache :
https://openclassrooms.com/fr/courses/1739796-administrez-vos-serveurs-linux/
→ Très pédagogique pour débuter
13. TP pour s’exercer
TP1 : redirection HTTPS
Objectif :
- forcer HTTPS
- vérifier avec navigateur
TP2 : protection dossier
- créer
/admin - ajouter authentification
TP3 : URL rewriting
- transformer
index.php?page=1 - en
/page/1
TP4 : blocage IP
- bloquer ton IP
- vérifier accès refusé
Cette fiche te donne une base solide pour maîtriser .htaccess en environnement réel.
