Le fichier .htaccess contrôle les accès, la sécurité et les performances de votre site WordPress sur serveur Apache. Ce guide couvre les 15 règles essentielles : protection de wp-config.php, blocage de l’exécution PHP dans /uploads/, interdiction du directory browsing, cache navigateur, en-têtes de sécurité et redirections 301. Sauvegardez toujours votre .htaccess avant toute modification.
Pas le temps ? Faites-le analyser par l'IA
Le .htaccess est le fichier le plus puissant — et le plus dangereux — de votre installation WordPress. Une ligne bien placée peut bloquer une attaque. Une erreur de syntaxe peut rendre votre site inaccessible. En tant que développeur WordPress depuis 2012 et après des centaines de sites audités en formation, j’ai vu les deux cas. Plus souvent le deuxième.
Qu’est-ce que le fichier .htaccess ?
.htaccess est l’abréviation de " Hypertext Access ". C’est un fichier de configuration pour les serveurs web Apache — le logiciel qui traite les requêtes HTTP et affiche vos pages aux visiteurs.
Chaque fois qu’un internaute demande une page de votre site, Apache consulte le .htaccess pour savoir comment traiter la requête : rediriger ? Bloquer ? Mettre en cache ? Exiger un mot de passe ? Le .htaccess répond à toutes ces questions.
Le fichier .htaccess est situé à la racine de votre installation WordPress, au même niveau que wp-config.php et wp-content/. Le point initial (.) signifie que c’est un fichier caché — dans votre client FTP, activez l’affichage des fichiers cachés pour le voir.
Info : Si votre hébergeur utilise Nginx au lieu d’Apache (cas de Kinsta, Flywheel, certaines offres chez Infomaniak), le .htaccess n’est pas lu. Les règles équivalentes se configurent dans le fichier nginx.conf ou via le panneau d’administration de l’hébergeur. Chez O2switch et la plupart des hébergements mutualisés, c’est Apache — le .htaccess fonctionne.
Attention : Téléchargez une copie de votre .htaccess actuel avant toute modification. Renommez-la avec la date (htaccess-backup-2026-03-07.txt). En cas de problème, il suffit de re-uploader l’original via FTP pour restaurer le site.
Le .htaccess par défaut de WordPress
Quand vous activez les permaliens personnalisés (Réglages → Permaliens), WordPress génère automatiquement un .htaccess avec ce contenu :
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Ce code fait une seule chose : si le fichier ou dossier demandé n’existe pas physiquement sur le serveur, WordPress le redirige vers index.php qui interroge la base de données pour trouver le contenu correspondant. C’est ce qui permet à vos URLs propres (/mon-article/) de fonctionner au lieu d’afficher ?p=123.
Règle d’or : ne modifiez jamais le bloc entre # BEGIN WordPress et # END WordPress. WordPress peut le réécrire à tout moment. Ajoutez toujours vos règles personnalisées au-dessus de ce bloc.
15 règles .htaccess essentielles pour WordPress
Chaque règle ci-dessous se copie-colle directement. Ajoutez-les au-dessus du bloc # BEGIN WordPress dans votre .htaccess.
1. Protéger wp-config.php
Le fichier wp-config.php contient vos identifiants de base de données et vos clés de sécurité. Si quelqu’un y accède, il a tout.
<Files wp-config.php>
Order Allow,Deny
Deny from all
</Files>
2. Protéger le .htaccess lui-même
<Files ~ "^\.ht">
Order Allow,Deny
Deny from all
Satisfy All
</Files>
3. Interdire le directory browsing
Sans cette règle, un visiteur peut taper votresite.com/wp-content/uploads/ et voir la liste de tous vos fichiers. Une mine d’informations pour un attaquant.
Options -Indexes
4. Désactiver l’exécution PHP dans /uploads/
C’est la règle de sécurité la plus sous-estimée. Si un attaquant uploade un fichier PHP déguisé en image, cette règle empêche son exécution. Créez un fichier .htaccess dans wp-content/uploads/ avec :
<Files "*.php">
Order Allow,Deny
Deny from all
</Files>
5. Désactiver l’exécution PHP dans /wp-includes/
Même logique. Les fichiers dans /wp-includes/ ne doivent pas être appelés directement.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^wp-admin/includes/ - [F,L]
RewriteRule !^wp-includes/ - [S=3]
RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
RewriteRule ^wp-includes/theme-compat/ - [F,L]
</IfModule>
6. Masquer les informations serveur
ServerSignature Off
7. Bloquer les scans d’auteurs
Les attaquants utilisent ?author=1, ?author=2 etc. pour découvrir les identifiants de connexion. Cette règle bloque ces tentatives.
<IfModule mod_rewrite.c>
RewriteCond %{QUERY_STRING} ^author=([0-9]*)
RewriteRule .* - [F]
</IfModule>
8. Bloquer le spam de commentaires
Cette règle vérifie que les commentaires proviennent bien de votre site (via le referrer) et bloque les soumissions directes par des bots.
<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} .wp-comments-post\.php*
RewriteCond %{HTTP_REFERER} !.*votresite\.com.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule (.*) ^http://%{REMOTE_ADDR}/$ [R=301,L]
</IfModule>
Conseil : Remplacez votresite.com par votre propre domaine. Si vous utilisez déjà Akismet ou un système anti-spam dans votre thème, cette règle est redondante.
9. Bannir des adresses IP
Si vous identifiez des IP malveillantes dans vos logs (tentatives de connexion répétées, scans de vulnérabilités) :
<Limit GET POST>
Order Allow,Deny
Deny from 123.456.789.0
Deny from 987.654.321.0
Allow from all
</Limit>
10. Désactiver XML-RPC
XML-RPC permet les connexions depuis des applications tierces (app mobile WordPress, Jetpack). Si vous ne l’utilisez pas, désactivez-le — c’est un vecteur d’attaque brute-force courant.
<Files xmlrpc.php>
Order Allow,Deny
Deny from all
</Files>
11. Bloquer le hotlinking d’images
Le hotlinking, c’est quand un autre site affiche vos images en pointant vers vos URLs. Votre serveur supporte le trafic, ils profitent du contenu.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https://(www\.)?votresite\.com [NC]
RewriteCond %{HTTP_REFERER} !^https://(www\.)?google\.com [NC]
RewriteRule \.(jpg|jpeg|png|gif|webp)$ - [F,NC,L]
</IfModule>
12. Forcer HTTPS
Si votre certificat SSL est en place mais que le site est encore accessible en HTTP :
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
</IfModule>
13. Activer le cache navigateur
Les fichiers statiques (images, CSS, JS) ne changent pas à chaque visite. Le cache navigateur dit au navigateur de les stocker localement pendant une durée définie.
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access plus 1 year"
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType image/webp "access plus 1 year"
ExpiresByType image/gif "access plus 1 year"
ExpiresByType image/svg+xml "access plus 1 year"
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/javascript "access plus 1 month"
ExpiresByType application/pdf "access plus 1 month"
ExpiresByType text/html "access plus 0 seconds"
</IfModule>
14. Activer la compression GZIP
La compression réduit la taille des fichiers envoyés au navigateur. Sur un site WordPress typique, ça peut réduire le poids des pages de 60 à 70 %.
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/json
AddOutputFilterByType DEFLATE image/svg+xml
</IfModule>
15. Ajouter les en-têtes de sécurité
Les en-têtes de sécurité HTTP ajoutent une couche de protection côté navigateur.
<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"
Header set Permissions-Policy "geolocation=(), microphone=(), camera=()"
</IfModule>
Info : La directive Content-Security-Policy n’est pas incluse ici car elle nécessite une configuration spécifique à votre site (scripts, styles, iframes autorisés). Un CSP mal configuré casse l’affichage. Configurez-le en mode report-only d’abord.
Redirections 301 dans le .htaccess
Les redirections 301 (permanentes) sont indispensables pour le SEO lors d’un changement de structure d’URLs ou de migration.
# Redirection simple
Redirect 301 /ancienne-page/ https://votresite.com/nouvelle-page/
# Redirection avec regex (supprimer /category/ des URLs)
<IfModule mod_rewrite.c>
RewriteRule ^category/(.+)$ https://votresite.com/$1 [R=301,L]
</IfModule>
# Forcer www ou non-www
# Sans www (recommandé) :
RewriteCond %{HTTP_HOST} ^www\.votresite\.com [NC]
RewriteRule ^(.*)$ https://votresite.com/$1 [R=301,L]
Page de maintenance via .htaccess
Besoin de mettre le site en maintenance pour une mise à jour majeure ? Cette règle redirige tous les visiteurs vers une page statique, sauf votre IP :
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} !/maintenance.html$
RewriteCond %{REMOTE_ADDR} !^123\.456\.789\.0
RewriteRule $ /maintenance.html [R=302,L]
</IfModule>
Remplacez l’IP par la vôtre (trouvable sur whatismyipaddress.com). Utilisez un code 302 (temporaire), pas 301 — sinon Google indexera votre page de maintenance.
Augmenter les limites serveur
Si votre hébergeur le permet, vous pouvez augmenter les limites PHP via le .htaccess :
php_value upload_max_filesize 64M
php_value post_max_size 64M
php_value max_execution_time 300
php_value max_input_time 300
php_value memory_limit 256M
Attention : Certains hébergeurs mutualisés bloquent les directives php_value dans le .htaccess. Si vous obtenez une erreur 500, supprimez ces lignes et modifiez les valeurs dans le php.ini ou via le panneau cPanel de votre hébergeur.
Erreurs courantes et dépannage
- Erreur 500 après modification — restaurez immédiatement votre backup. L’erreur vient d’une faute de syntaxe, d’un module Apache désactivé ou d’une directive non supportée par votre hébergeur.
- Les règles ne s’appliquent pas — vérifiez que
mod_rewriteest activé (la plupart des hébergeurs l’activent par défaut). Vérifiez aussi queAllowOverride Allest configuré dans la configuration Apache du serveur. - Conflit avec un plugin de cache — LiteSpeed Cache, W3 Total Cache et WP Super Cache écrivent leurs propres règles dans le .htaccess. Si vous ajoutez des règles de cache manuelles qui entrent en conflit, désactivez d’abord les règles du plugin.
- Boucle de redirections — vérifiez que vous n’avez pas une redirection HTTP→HTTPS dans le .htaccess ET dans un plugin (Yoast, Really Simple SSL). Une seule suffit.
Questions fréquentes
Où se trouve le fichier .htaccess dans WordPress ?
Le fichier .htaccess se situe à la racine de votre installation WordPress, au même niveau que wp-config.php et le dossier wp-content. C’est un fichier caché — activez l’affichage des fichiers cachés dans votre client FTP pour le voir.
Peut-on créer un fichier .htaccess s’il n’existe pas ?
Oui. Allez dans Réglages → Permaliens et cliquez sur " Enregistrer les modifications ". WordPress génère automatiquement le .htaccess. Vous pouvez aussi créer le fichier manuellement via FTP avec un éditeur de texte.
Le .htaccess fonctionne-t-il avec Nginx ?
Non. Le .htaccess est spécifique aux serveurs Apache. Si votre hébergeur utilise Nginx (Kinsta, Flywheel, certaines offres premium), les règles équivalentes se configurent dans le fichier nginx.conf ou via le panneau d’administration de l’hébergeur.
Comment restaurer un .htaccess corrompu ?
Connectez-vous en FTP, supprimez le .htaccess corrompu et remplacez-le par votre sauvegarde. Si vous n’avez pas de sauvegarde, créez un fichier vide et allez dans Réglages → Permaliens pour que WordPress régénère le .htaccess par défaut.
Faut-il ajouter les règles avant ou après le bloc WordPress ?
Toujours avant le bloc " # BEGIN WordPress ". WordPress peut réécrire le contenu entre ses balises BEGIN et END à tout moment. Vos règles personnalisées placées à l’intérieur seraient supprimées.
Le .htaccess peut-il améliorer le SEO ?
Indirectement, oui. Les redirections 301 préservent le jus de lien, le cache navigateur améliore les Core Web Vitals, la compression GZIP accélère le chargement, et le forçage HTTPS est un facteur de classement Google. Ces optimisations se configurent dans le .htaccess.
Mon hébergeur utilise LiteSpeed, le .htaccess fonctionne-t-il ?
Oui. LiteSpeed est compatible avec les fichiers .htaccess Apache. C’est l’un de ses avantages par rapport à Nginx. La plupart des hébergements mutualisés (O2switch, OVH, PlanetHoster) utilisent LiteSpeed ou Apache — le .htaccess fonctionne dans les deux cas.
Chaque mois, je passe 15 heures en veille WordPress. Vous, vous recevez un email de 3 minutes.
Sécurité, performance, SEO, nouveautés, IA : l'essentiel trié, vérifié et expliqué par un formateur WordPress depuis 2012 et fondateur de WPServeur.
1 email par mois. Désabonnement en 1 clic.
Analyser avec l'IA
Partager

