Générateur .htaccess : configurer Apache sans casse-tête
📷 Taylor Vick / PexelsGénérateur .htaccess : configurer Apache sans casse-tête
Le fichier .htaccess est l'outil de configuration par répertoire des serveurs Apache. Découvrez les règles essentielles, les pièges courants et comment générer une configuration correcte en quelques secondes.
Le fichier .htaccess est l'un des fichiers les plus puissants et les plus redoutés d'un serveur Apache. Une seule faute de frappe peut mettre tout votre site hors ligne avec une erreur 500, mais bien configuré, il gère en une seule fois la redirection HTTPS, la compression et le renforcement de la sécurité.
Si vous souhaitez obtenir directement un fichier correct, le générateur htaccess vous le crée en quelques secondes. Mais comprendre ce que font les différentes directives vous aidera à diagnostiquer rapidement les problèmes.
Qu'est-ce que .htaccess ?
.htaccess est un fichier de configuration par répertoire pour les serveurs web Apache. Son nom commence par un point (.), ce qui en fait un fichier caché sur les systèmes Unix/Linux.
Lorsque Apache traite une requête, il vérifie le répertoire cible et tous les répertoires parents pour trouver des fichiers .htaccess et appliquer les configurations trouvées. Cela vous permet de définir des règles pour des répertoires spécifiques sans modifier la configuration principale du serveur.
Cas d'usage typiques :
- Hébergement mutualisé (pas d'accès à la configuration principale)
- Redirections HTTPS et réécriture d'URL
- Compression et mise en cache navigateur
- Restrictions d'accès et en-têtes de sécurité
Les 3 règles essentielles
1. Forcer HTTPS
Rediriger automatiquement les visiteurs HTTP vers HTTPS est essentiel pour la sécurité et le référencement.
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
R=301 indique une redirection permanente, signalant aux moteurs de recherche que l'URL a changé. N'ajoutez cette règle qu'après avoir installé un certificat SSL valide, sinon votre site devient inaccessible.
2. Activer la compression Gzip
Les fichiers texte comme HTML, CSS et JavaScript se compriment de 60 à 80%. La vitesse de chargement des pages s'améliore de manière perceptible.
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/css
AddOutputFilterByType DEFLATE text/javascript application/javascript
AddOutputFilterByType DEFLATE application/json application/xml
</IfModule>
Le wrapper <IfModule> empêche une erreur si mod_deflate n'est pas installé.
3. Désactiver le listing de répertoire
Sans fichier index.html, Apache affiche par défaut la liste de tous les fichiers du répertoire. C'est une faille de sécurité majeure.
Options -Indexes
Une ligne suffit pour bloquer l'affichage du contenu des répertoires. Indispensable en production.
Le générateur htaccess vous permet de cocher ces trois options et d'obtenir le code immédiatement.
Erreurs courantes
Le problème AllowOverride
Quand .htaccess semble ne pas fonctionner, commencez par vérifier cela. Si la configuration Apache principale contient :
<Directory /var/www/html>
AllowOverride None
</Directory>
Apache ignore entièrement le fichier .htaccess. La solution :
<Directory /var/www/html>
AllowOverride All
</Directory>
Cette modification nécessite l'accès au fichier de configuration principal. En hébergement mutualisé, AllowOverride All est souvent la valeur par défaut. Sur VPS ou serveur dédié, il faut le vérifier et le configurer soi-même.
Configurer simultanément www et non-www
Écrire les redirections HTTPS et la normalisation www comme deux règles séparées peut provoquer des boucles de redirection. La bonne approche est de combiner les deux conditions dans une seule règle :
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteRule ^ https://yourdomain.com%{REQUEST_URI} [R=301,L]
Cela gère les quatre combinaisons http/https et www/non-www en une seule redirection.
Utiliser .htaccess sur Nginx
Nginx ne lit pas les fichiers .htaccess. Après une migration d'Apache vers Nginx, toutes les règles .htaccess doivent être manuellement converties en directives de bloc server Nginx.
Certains hébergeurs WordPress utilisent Nginx en arrière-plan tout en affichant un panneau de contrôle similaire à Apache. Vérifiez toujours quel serveur web tourne réellement.
Configuration pratique pour WordPress
WordPress a besoin de .htaccess pour ses permaliens. Voici la configuration complète recommandée :
Au-dessus du bloc WordPress :
# Forcer HTTPS
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Le bloc standard WordPress :
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
En-dessous du bloc WordPress :
# Compression Gzip
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/css text/javascript application/javascript
</IfModule>
# Cache navigateur
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType text/css "access plus 1 month"
</IfModule>
# Désactiver le listing de répertoire
Options -Indexes
# Protéger les fichiers sensibles
<FilesMatch "\.(env|log|ini|bak|sql|conf)$">
Order allow,deny
Deny from all
</FilesMatch>
# Protéger wp-config.php
<Files wp-config.php>
Order allow,deny
Deny from all
</Files>
L'ensemble de cette configuration peut être généré en quelques clics avec l'outil htaccess-generator.
.htaccess vs httpd.conf
Si vous avez accès au serveur, il est préférable du point de vue des performances d'écrire les règles directement dans la configuration de l'hôte virtuel, car Apache lit .htaccess à chaque requête.
| Critère | .htaccess | httpd.conf |
|---|---|---|
| Portée | Par répertoire | Serveur entier |
| Prise en effet | Immédiate | Après redémarrage |
| Droits requis | Propriétaire du fichier | root |
| Performance | Légèrement inférieure | Optimale |
En hébergement mutualisé, .htaccess est souvent le seul choix. Avec un accès complet au serveur, il vaut mieux utiliser httpd.conf.
Tester après chaque modification
Après chaque modification de .htaccess, vérifiez immédiatement :
- Ouvrez le site dans un navigateur et vérifiez les erreurs 500
- Consultez le journal d'erreurs Apache (
/var/log/apache2/error.log) - Testez les redirections avec
curl -I http://yourdomain.com - Conservez toujours une sauvegarde avant modification
Le code généré par le générateur htaccess est syntaxiquement correct, ce qui réduit considérablement le risque d'erreurs 500 dues aux fautes de frappe.