.htaccess expliqué : le guide complet
Le fichier htaccess est l'un des fichiers de configuration les plus puissants pour votre site web. Que vous souhaitiez mettre en place des redirections, renforcer la sécurité ou afficher des pages d'erreur personnalisées, ce fichier de configuration permet de tout gérer. Dans ce guide complet, nous expliquons ce que fait ce fichier et comment l'utiliser, et nous donnons des exemples de code pratiques que vous pouvez appliquer immédiatement.
Qu'est-ce qu'un fichier htaccess et à quoi sert-il ?
Le fichier htaccess (nom complet : .htaccess) est un fichier de configuration pour le serveur web Apache. Le point devant le nom indique qu'il s'agit d'un fichier caché sur les serveurs Linux. Le fichier contient des instructions que le serveur Apache exécute avant le chargement d'une page.
Avec un fichier htaccess, vous pouvez notamment :
- Configurer des redirections d'URL : rediriger automatiquement les visiteurs vers les nouvelles pages
- Restreindre l'accès : bloquer ou autoriser certaines adresses IP
- Protection par mot de passe : protéger des dossiers par mot de passe
- Pages d'erreur personnalisées : afficher vos propres pages 404 et 500
- Configurer la mise en cache du navigateur : améliorer les temps de chargement grâce à des règles de cache
- Forcer le HTTPS : rediriger les connexions non sécurisées vers HTTPS
- Protection contre le hotlinking : empêcher d'autres sites d'intégrer vos images
Le fichier fonctionne dossier par dossier : un fichier htaccess placé à la racine de votre site web s'applique à tous les fichiers et sous-dossiers, sauf si un sous-dossier possède son propre fichier htaccess dont les règles prennent le dessus.
Comment créer un fichier htaccess ?
Créer un fichier htaccess est simple, mais quelques points demandent de l'attention :
Avec un éditeur de texte
- Ouvrez un éditeur de texte : utilisez Notepad++, VS Code ou un autre éditeur (pas Word !)
- Créez un nouveau fichier : commencez avec un fichier vide
- Enregistrez-le sous « .htaccess » : attention, le nom du fichier commence par un point et n'a pas d'extension
- Envoyez-le par FTP : placez le fichier dans le dossier où il doit s'appliquer
Avec le gestionnaire de fichiers de votre hébergement
De nombreux hébergeurs web proposent un gestionnaire de fichiers dans leur panneau d'administration, qui permet de modifier directement le fichier htaccess. Dans cPanel, vous le trouvez sous « File Manager ».
Attention : le fichier est caché par défaut. Dans cPanel, vous devez activer l'option « Show Hidden Files » pour pouvoir le voir.
Les règles htaccess les plus importantes expliquées
Nous passons ci-dessous en revue les règles les plus utilisées que vous pouvez appliquer dans votre fichier de configuration. Chaque règle est expliquée avec un exemple de code fonctionnel.
Redirections 301 (redirection permanente)
Une redirection 301 indique aux moteurs de recherche qu'une page a été déplacée définitivement. C'est important pour votre SEO, car l'autorité du lien est transférée vers la nouvelle URL.
Exemple de code pour une redirection unique :
Redirect 301 /oude-pagina.html /nieuwe-pagina.html
Pour des redirections plus complexes, vous utilisez mod_rewrite :
RewriteEngine On
RewriteRule ^oude-pad/(.*)$ /nieuw-pad/$1 [R=301,L]
Forcer le HTTPS
Rediriger automatiquement tous les visiteurs de HTTP vers HTTPS :
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Ajouter ou supprimer le www
Pour toujours utiliser la version avec www :
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]
Htaccess pour de meilleures performances : mise en cache et compression
Un fichier htaccess bien configuré peut améliorer sensiblement le temps de chargement de votre site web. Voici les principales optimisations de performances :
Configurer la mise en cache du navigateur
Grâce à la mise en cache du navigateur, le navigateur de votre visiteur n'a pas besoin de télécharger à nouveau tous les fichiers à chaque visite :
# Configurer le cache par type de fichier
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/javascript "access plus 1 month"
ExpiresByType text/html "access plus 1 hour"
</IfModule>
Activer la compression GZIP
La compression réduit la taille des fichiers de vos pages web de 60 à 80 %, ce qui améliore fortement le temps de chargement :
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml
AddOutputFilterByType DEFLATE text/css application/javascript
AddOutputFilterByType DEFLATE application/json application/xml
</IfModule>
| Optimisation | Amélioration attendue | Difficulté |
|---|---|---|
| Mise en cache du navigateur | 20 à 40 % plus rapide lors d'une nouvelle visite | Facile |
| Compression GZIP | Fichiers 60 à 80 % plus petits | Facile |
| Keep-Alive | Connexion 10 à 20 % plus rapide | Facile |
| Désactiver les ETags | Moins de requêtes inutiles | Facile |
Renforcer la sécurité avec htaccess
Le fichier htaccess est aussi un outil puissant pour la sécurité de votre site web. Voici les principales règles de sécurité :
Désactiver le listage des répertoires (directory listing)
Empêchez les visiteurs de consulter le contenu de vos dossiers :
Options -Indexes
Bloquer l'accès aux fichiers sensibles
Protégez les fichiers de configuration et les autres données sensibles :
# Bloquer l'accès au fichier .htaccess lui-même
<Files .htaccess>
Order Allow,Deny
Deny from all
</Files>
# Bloquer l'accès à wp-config.php (WordPress)
<Files wp-config.php>
Order Allow,Deny
Deny from all
</Files>
Bloquer des adresses IP
Bloquez les adresses IP précises à l'origine d'un trafic indésirable :
Order Allow,Deny
Deny from 192.168.1.100
Deny from 10.0.0.0/24
Allow from all
Protection contre le hotlinking
Empêchez d'autres sites web d'intégrer directement vos images (ce qui consomme votre bande passante) :
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https://(www\.)?example\.com [NC]
RewriteRule \.(jpg|jpeg|png|gif|webp)$ - [NC,F,L]
Configurer des pages d'erreur personnalisées avec htaccess
Les pages d'erreur par défaut sont laides et peu utiles. Avec le fichier htaccess, vous pouvez définir vos propres pages d'erreur, adaptées au design de votre site web :
ErrorDocument 400 /fouten/400.html
ErrorDocument 401 /fouten/401.html
ErrorDocument 403 /fouten/403.html
ErrorDocument 404 /fouten/404.html
ErrorDocument 500 /fouten/500.html
| Code d'erreur | Signification | Cause fréquente |
|---|---|---|
| 400 | Bad Request | Requête non valide envoyée par le navigateur |
| 401 | Unauthorized | Authentification requise |
| 403 | Forbidden | Accès refusé par les règles du serveur |
| 404 | Not Found | La page n'existe pas ou a été supprimée |
| 500 | Internal Server Error | Erreur dans la configuration du serveur ou dans un script |
Htaccess et WordPress : usages spécifiques
WordPress utilise intensivement le fichier htaccess pour la structure des permaliens. Le bloc htaccess standard de WordPress se présente ainsi :
# 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
Placez toujours vos propres règles avant ou après ce bloc, jamais au milieu. WordPress peut écraser le bloc lorsque vous modifiez vos réglages de permaliens.
Erreurs courantes dans le fichier htaccess
Une erreur dans votre fichier de configuration peut rendre tout votre site web inaccessible. Voici les erreurs les plus fréquentes et comment les éviter :
- Fautes de frappe dans les règles : une seule faute de frappe peut provoquer une erreur 500. Vérifiez chaque ligne avec soin
- Boucles de redirection infinies : des règles de redirection contradictoires peuvent créer une boucle. Testez toujours après chaque modification
- Aucune sauvegarde : faites toujours une copie avant de modifier le fichier
- Mauvais nom de fichier : le fichier doit s'appeler exactement « .htaccess », sans extension
- Règles dans le mauvais ordre : l'ordre des règles est important. Les règles spécifiques doivent précéder les règles générales
- Ne pas tester : testez toujours vos modifications dans un environnement de test avant de les mettre en ligne
Htaccess ou Nginx : que faire si vous n'utilisez pas Apache ?
Le fichier htaccess ne fonctionne que sur les serveurs web Apache. Si votre hébergement web utilise Nginx, vous aurez besoin d'une autre approche. Nginx ne lit pas les fichiers htaccess, mais utilise un fichier de configuration central (nginx.conf).
La plupart des fonctionnalités d'un fichier htaccess existent aussi dans Nginx, mais la syntaxe est complètement différente. Vérifiez auprès de votre hébergeur quel serveur web est utilisé.
Questions fréquentes sur le fichier htaccess
Puis-je avoir plusieurs fichiers de configuration ?
Oui, vous pouvez placer un fichier htaccess dans chaque dossier. Les règles d'un fichier de sous-dossier ont priorité sur celles du dossier racine.
Comment tester ce fichier sans casser mon site en production ?
Utilisez un environnement de test ou un serveur de staging. Vous pouvez aussi tester la configuration Apache avec la commande apachectl configtest si vous avez accès au serveur.
Mon site affiche une erreur 500 après la modification du fichier. Que faire ?
Restaurez le fichier d'origine depuis votre sauvegarde. Si vous n'avez pas de sauvegarde, renommez ou supprimez le fichier htaccess via FTP ou le gestionnaire de fichiers. Votre site devrait alors fonctionner de nouveau.
Ce fichier de configuration fonctionne-t-il sur tous les hébergements ?
Uniquement sur les serveurs web Apache. La plupart des hébergements mutualisés utilisent Apache, mais vérifiez-le auprès de votre hébergeur. Les serveurs LiteSpeed prennent aussi en charge ce type de fichiers de configuration.
Techniques htaccess avancées pour utilisateurs expérimentés
Au-delà des usages de base, le fichier de configuration offre aussi des possibilités avancées pour les développeurs web et les administrateurs de serveurs expérimentés. Ces techniques demandent plus de connaissances, mais peuvent faire une grande différence pour les performances et la sécurité de votre site web.
En-têtes Content Security Policy
Avec les en-têtes de sécurité, vous protégez vos visiteurs contre le cross-site scripting (XSS) et d'autres attaques. Ajoutez ces en-têtes à votre fichier de configuration :
<IfModule mod_headers.c>
Header set X-Content-Type-Options "nosniff"
Header set X-Frame-Options "SAMEORIGIN"
Header set X-XSS-Protection "1; mode=block"
Header set Referrer-Policy "strict-origin-when-cross-origin"
</IfModule>
Règles conditionnelles selon le navigateur
Vous pouvez appliquer des règles spécifiques selon le navigateur ou l'appareil du visiteur. C'est pratique pour servir un contenu optimisé à différents utilisateurs. Utilisez RewriteCond avec la variable HTTP_USER_AGENT pour créer des règles propres à un navigateur.
Limitation du débit et protection contre la force brute
Protégez votre page de connexion contre les attaques par force brute en limitant le nombre de requêtes par adresse IP. C'est surtout important pour les sites WordPress, dont la page wp-login.php est souvent la cible d'attaques automatisées. Combinez cela avec une protection par mot de passe via le fichier de configuration pour ajouter une couche de sécurité.
Définir des variables d'environnement
Avec SetEnv et SetEnvIf, vous pouvez définir des variables d'environnement lisibles par votre application. C'est pratique pour configurer des réglages différents selon l'environnement, par exemple pour distinguer la production du développement.
Le fichier htaccess est un outil indispensable pour tout propriétaire de site web. Des redirections et de la mise en cache jusqu'à la sécurité et l'optimisation des performances, les possibilités sont infinies. Avec les exemples de cet article, vous pouvez vous lancer immédiatement pour rendre votre site web plus rapide, plus sûr et mieux référencé.
N'oubliez pas de toujours faire une sauvegarde avant d'apporter des modifications, et testez toujours les nouvelles règles dans un environnement de test. Avec un fichier htaccess bien configuré, vous tirez le meilleur parti de votre hébergement web et offrez la meilleure expérience à vos visiteurs.
Vous souhaitez en savoir plus sur les possibilités d'hébergement et sur la façon de tirer le meilleur parti de votre configuration serveur ? Consultez alors notre guide détaillé sur l'hébergement web, où nous abordons tous les aspects de l'hébergement, y compris la configuration serveur et l'optimisation des performances. Avec la bonne combinaison d'hébergement et de réglages serveur, vous construisez un site web rapide, sûr et fiable.
Htaccess : redirections avancées et réécriture d'URL
L'une des applications les plus puissantes du fichier htaccess est la réécriture et la redirection d'URL. C'est essentiel pour le SEO et l'expérience utilisateur.
Redirections 301 pour le SEO
Lorsque vous modifiez la structure d'URL de votre site web, vous devez mettre en place des redirections 301 pour informer les moteurs de recherche que la page a été déplacée définitivement. Sans redirections, vous perdez la valeur SEO accumulée par les anciennes URL et les visiteurs obtiennent une erreur 404. Une redirection 301 transfère la majeure partie de la valeur du lien vers la nouvelle URL. Utilisez des redirections spécifiques page par page plutôt que des règles à caractères génériques pour obtenir la redirection la plus précise.
Réécriture d'URL avec mod_rewrite
Le module mod_rewrite vous permet de réécrire des URL sans que le visiteur ne s'en aperçoive. Vous créez ainsi des URL lisibles, appréciées des utilisateurs comme des moteurs de recherche. Une URL telle que example.com/product.php?id=123 est réécrite en example.com/produit/coque-smartphone. La directive RewriteRule de votre fichier htaccess détermine comment l'URL est convertie, tandis que RewriteCond pose les conditions dans lesquelles la règle s'applique.
Règles de redirection htaccess courantes
| Objectif | Type | Utilisation |
|---|---|---|
| HTTP vers HTTPS | Redirection 301 | Forcer une connexion sécurisée |
| www vers non-www | Redirection 301 | Définir l'URL canonique |
| Ancienne URL vers la nouvelle | Redirection 301 | Après une restructuration du site |
| Ajouter le slash final | Redirection 301 | Cohérence des URL |
| Redirection temporaire | Redirection 302 | Page de maintenance |
Htaccess : sécurité et contrôle d'accès
Le fichier htaccess est un outil puissant pour sécuriser votre site web et limiter l'accès non autorisé aux fichiers sensibles.
Protection des répertoires
Protégez les répertoires sensibles, comme votre panneau d'administration, vos dossiers de configuration et vos dossiers d'upload, en les verrouillant par mot de passe via htaccess. Combinez cela avec une restriction par IP pour n'autoriser que certaines adresses IP à accéder aux interfaces d'administration. Bloquez aussi le listage des répertoires afin que les visiteurs ne puissent pas parcourir l'arborescence de vos dossiers. Ces mesures simples empêchent des personnes non autorisées d'accéder à des fichiers qui ne sont pas destinés au public.
Configurer la protection contre le hotlinking
Le hotlinking consiste à créer un lien direct vers des fichiers de votre serveur depuis d'autres sites web, qui consomment alors votre bande passante. Avec htaccess, vous pouvez configurer une protection contre le hotlinking qui n'autorise que les requêtes provenant de votre propre domaine et de sources de confiance, comme les moteurs de recherche. Cela économise de la bande passante et des ressources serveur. Définissez une image de remplacement qui s'affiche lorsque quelqu'un tente d'utiliser vos fichiers en hotlink.
Vous souhaitez en savoir plus sur la sécurité d'un site web ? Lisez notre article sur les conseils pour sécuriser votre site web pour découvrir des mesures de sécurité complémentaires.
Htaccess : questions fréquentes et bonnes pratiques
En travaillant avec le fichier htaccess, les mêmes questions reviennent souvent. Nous répondons ci-dessous aux plus importantes et partageons des bonnes pratiques pour une utilisation sûre.
Htaccess influence-t-il la vitesse du site web ?
Oui, mais l'impact peut être positif comme négatif. Des règles htaccess bien configurées pour la mise en cache et la compression améliorent nettement la vitesse. Trop de règles, ou des règles mal écrites, peuvent ralentir le serveur, car Apache doit analyser le fichier htaccess à chaque requête. Pour les sites web à très fort trafic, il est plus efficace de placer les règles directement dans la configuration Apache plutôt que dans htaccess, mais pour la plupart des sites web l'impact est négligeable.
Puis-je utiliser htaccess sur Nginx ?
Non, le fichier htaccess est propre au serveur web Apache. Nginx utilise un autre système de configuration, via des blocs serveur dans le fichier nginx.conf. Si vous passez d'Apache à Nginx, vous devez traduire vos règles htaccess en syntaxe Nginx. Il existe des convertisseurs en ligne qui peuvent traduire automatiquement les règles les plus courantes, mais les configurations complexes demandent une adaptation manuelle.
Bonnes pratiques pour htaccess
- Faites toujours une sauvegarde avant d'apporter des modifications au fichier htaccess
- Testez chaque modification immédiatement en chargeant le site web dans votre navigateur après l'enregistrement
- Ajoutez des commentaires à chaque règle ou bloc pour savoir plus tard pourquoi une règle a été ajoutée
- Gardez le fichier compact en n'y mettant que les règles nécessaires
- Utilisez des règles spécifiques plutôt que de larges caractères génériques pour éviter les effets involontaires
- Vérifiez l'absence de doublons car des règles contradictoires provoquent un comportement imprévisible
Htaccess : résumé et règles essentielles
Avec les bonnes connaissances, le fichier htaccess est un outil indispensable pour configurer votre site web. Nous résumons ici les règles essentielles que tout site web devrait avoir.
Configuration htaccess minimale
Tout site web qui tourne sur un serveur Apache devrait avoir au minimum les configurations suivantes dans le fichier htaccess. Une redirection 301 de HTTP vers HTTPS pour servir tous les visiteurs via une connexion sécurisée. Des en-têtes de mise en cache du navigateur pour les fichiers statiques afin d'améliorer la rapidité de chargement. La compression GZIP pour les fichiers texte afin de réduire la taille des transferts. Une protection contre le listage des répertoires pour empêcher les visiteurs de parcourir l'arborescence de vos dossiers. Le blocage de l'accès aux fichiers sensibles tels que wp-config.php et .htaccess lui-même.
Quand faire appel à un professionnel
Même si de nombreuses configurations htaccess peuvent être réalisées soi-même, il existe des situations où l'aide d'un professionnel est judicieuse. Pour des réécritures d'URL complexes sur de grands sites web comptant des centaines de pages, une erreur est vite arrivée. Lors de la configuration de règles de sécurité avancées, un mauvais réglage peut rendre votre site web inaccessible. Pour résoudre des conflits entre des règles htaccess et la configuration d'un CMS, l'expérience est précieuse. Un développeur web ou votre hébergeur peut vous aider pour ces configurations plus complexes.
Htaccess : règles de sécurité avancées
Le fichier htaccess offre de puissantes possibilités pour sécuriser votre site web au niveau du serveur. Avec le contrôle d'accès par IP, vous pouvez bloquer des adresses IP précises ou, à l'inverse, n'accorder l'accès à des répertoires sensibles, comme le panneau d'administration, qu'à certaines adresses. La protection contre le hotlinking empêche d'autres sites web d'intégrer directement vos images et de consommer ainsi votre bande passante. Définissez des pages d'erreur personnalisées via le fichier htaccess afin que les visiteurs qui atteignent une page inexistante voient un message d'erreur utile, avec une navigation vers des pages qui fonctionnent.
Htaccess et en-têtes de performances
Utilisez le fichier htaccess pour définir les en-têtes HTTP liés aux performances. Les en-têtes Expires et Cache-Control déterminent combien de temps les navigateurs peuvent mettre les fichiers en cache localement. L'en-tête Content-Security-Policy protège contre les attaques de cross-site scripting. L'en-tête X-Content-Type-Options empêche le MIME-type sniffing. En configurant correctement ces en-têtes, vous améliorez à la fois les performances et la sécurité de votre site web, sans modifier le code de l'application.
Tester et déboguer htaccess
Des erreurs dans le fichier htaccess peuvent rendre tout votre site web inaccessible. Testez donc toujours vos modifications d'abord dans un environnement de staging avant de les passer en production. Utilisez des testeurs htaccess en ligne pour valider vos règles sans risque. Lorsqu'une erreur survient, renommez temporairement le fichier htaccess pour vérifier si le problème vient de lui. Gardez toujours à portée de main une sauvegarde du fichier htaccess qui fonctionne, afin de pouvoir revenir rapidement en arrière en cas de problème.