.htaccess WordPress : Tous les Codes pour Sécuriser Votre Site en 2026

La sécurité htaccess wordpress est la méthode la plus efficace pour protéger votre site sans installer de plugin. Quand on parle de htaccess wordpress securite, on pense souvent à des code complexes réservés aux experts. Pourtant, avec les bonnes règles, n’importe quel propriétaire de site peut blinder son WordPress en quelques minutes.

Si vous n’avez pas encore appliqué les mesures de base, commencez par lire notre Guide Complet de Sécurité WordPress avant de plonger dans les règles .htaccess.

Le .htaccess est un fichier de configuration qui se trouve à la racine de votre installation WordPress. Il donne des instructions au serveur web avant même que WordPress ne soit chargé. Bien configuré, il bloque les attaques au niveau le plus proche de la porte d’entrée : le serveur lui-même. Pas de plugin à charger, pas de base de données à interroger, pas de PHP à exécuter. Juste des règles claires qui disent au serveur ce qui est autorisé et ce qui ne l’est pas.

Dans ce guide complet de sécurité htaccess WordPress, je vais vous donner des extraits de code concrets, prêts à copier, avec des explications claires sur ce qu’ils font et pourquoi vous devriez les utiliser.

Sécurité htaccess WordPress : la précaution vitale avant de commencer

Le fichier .htaccess est un fichier de configuration puissant. Une erreur de syntaxe peut rendre votre site totalement inaccessible. Avant toute modification, consultez la documentation officielle WordPress sur le .htaccess pour comprendre les bases.

  1. Téléchargez une copie de votre fichier .htaccess actuel via FTP ou le gestionnaire de fichiers de votre hébergeur. Gardez-la précieusement.
  2. Testez votre site après chaque ajout de règles. N’ajoutez pas tout d’un coup. Procédez bloc par bloc, et vérifiez que votre site est toujours accessible entre chaque ajout.
  3. Si votre site devient inaccessible (erreur 500), reconnectez-vous en FTP, supprimez ou renommez le fichier .htaccess modifié, et restaurez votre sauvegarde.

Structure de base pour la sécurité htaccess WordPress

Votre fichier .htaccess contient déjà des règles par défaut pour WordPress. Il ressemble normalement à ceci :

# BEGIN WordPress

RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

# END WordPress

Gardez ce bloc intact. Toutes les règles de sécurité htaccess WordPress que nous allons ajouter se placeront avant la ligne # BEGIN WordPress.

1. Protéger le fichier .htaccess lui-même

La première chose à faire est d’empêcher quiconque de lire votre fichier .htaccess via le navigateur. Si un attaquant peut le lire, il voit toutes vos règles de protection et sait exactement comment les contourner. C’est la base de toute sécurité WordPress htaccess.

Ajoutez ce code tout en haut du fichier :

# Protection du fichier .htaccess lui-même
<Files .htaccess>
    Require all denied
</Files>

Ce bloc interdit totalement l’accès au fichier .htaccess depuis l’extérieur. Même en connaissant son URL exacte, personne ne pourra le lire.

2. Protéger le fichier wp-config.php

Le fichier wp-config.php est le cœur de votre installation WordPress. Il contient les identifiants de votre base de données. S’il tombe entre de mauvaises mains, c’est tout votre site qui est compromis. Cette règle htaccess WordPress sécurité est indispensable.

# Protection de wp-config.php
<Files wp-config.php>
    Require all denied
</Files>

Cette règle interdit l’accès direct au fichier wp-config.php via le navigateur. Votre WordPress y aura toujours accès, mais personne depuis l’extérieur ne pourra le télécharger.

Les règles .htaccess pour la sécurité WordPress : bloquer XML-RPC

Le fichier xmlrpc.php permettait autrefois de connecter des applications externes à WordPress. Aujourd’hui, il est massivement exploité pour des attaques par force brute et des attaques DDoS. Si vous n’utilisez pas l’application mobile WordPress ou un outil externe qui publie à distance, bloquez-le totalement.

# Blocage complet de xmlrpc.php
<Files xmlrpc.php>
    Require all denied
</Files>

Si vous avez besoin de xmlrpc.php pour une raison précise, vous pouvez le protéger d’une manière moins radicale en limitant les requêtes. Pour une protection encore plus robuste, combinez ces règles avec un pare-feu applicatif WordPress pour bloquer les attaques au niveau applicatif.

# Limitation des requêtes sur xmlrpc.php (si vous devez le garder)
<Files xmlrpc.php>
    Require ip 123.123.123.123
</Files>

Remplacez 123.123.123.123 par votre adresse IP publique.

4. Désactiver l’affichage du contenu des répertoires

Par défaut, si quelqu’un accède à un dossier qui ne contient pas de fichier index, le serveur affiche la liste de tous les fichiers présents. C’est une mine d’informations pour un attaquant. Cette règle sécurité htaccess WordPress est simple mais cruciale.

# Désactiver l'affichage du contenu des répertoires
Options -Indexes

Avec cette règle, un visiteur qui tente d’accéder à /wp-content/uploads/ verra une erreur 403 au lieu de la liste de tous vos fichiers images.

5. Bloquer les injections malveillantes via l’URL

Les attaquants utilisent souvent des requêtes contenant des caractères spécifiques pour tenter des injections SQL ou des inclusions de fichiers. Ces caractères ne devraient jamais apparaître dans une URL légitime. Voici une règle de sécurité htaccess WordPress qui bloque ces tentatives.

# Bloquer les caractères suspects dans les URLs
RewriteCond %{QUERY_STRING} (\<|%3C)([^s]*s)+cript.*(\>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} (\<|%3C)([^i]*i)+mg.*(\>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} (\<|%3C)([^i]*i)+frame.*(\>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) [NC,OR]
RewriteCond %{QUERY_STRING} union([\s]+)?select [NC,OR]
RewriteCond %{QUERY_STRING} \\\[.*\\\] [NC,OR]
RewriteCond %{QUERY_STRING} (\<|%3C)([^e]*e)+mbed.*(\>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} (\<|%3C)([^o]*o)+bject.*(\>|%3E) [NC]
RewriteRule .* - [F,L]

Ce bloc peut paraître intimidant, mais il fait une chose simple : si une requête contient des mots-clés suspects comme base64_encode, union select, ou des balises HTML malveillantes, le serveur renvoie une erreur 403.

6. Protéger les fichiers sensibles de WordPress

WordPress stocke des informations dans plusieurs fichiers qui peuvent révéler votre configuration. Protégeons-les avec une règle htaccess WordPress sécurité :

# Protection des fichiers sensibles WordPress
<FilesMatch "^(wp-config\.php|php\.ini|php5\.ini|\.htaccess|readme\.html|license\.txt|changelog\.txt|debug\.log)$">
    Require all denied
</FilesMatch>

Ce bloc interdit l’accès à une série de fichiers qui n’ont aucune raison d’être accessibles publiquement.

7. Limiter les types de fichiers uploadés

Le dossier uploads ne devrait contenir que des fichiers médias. Bloquez l’exécution de tout code qui s’y serait glissé avec cette règle de sécurité htaccess WordPress :

# Désactiver l'exécution de code dans le dossier uploads
<Directory "/wp-content/uploads">
    <FilesMatch "\.(php|php\.|php5|php7|phtml|phar|pl|py|jsp|asp|sh|cgi)$">
        Require all denied
    </FilesMatch>
    Options -ExecCGI
    <IfModule mod_headers.c>
        Header set X-Content-Type-Options "nosniff"
    </IfModule>
</Directory>

Cette règle est cruciale. Même si un pirate parvient à uploader un fichier PHP déguisé en image dans votre dossier uploads, ce fichier ne pourra pas être exécuté.

8. Bloquer l’accès aux fichiers cachés

Les fichiers qui commencent par un point (.git, .env, .htpasswd) contiennent souvent des informations sensibles. Bloquez-les :

# Bloquer l'accès aux fichiers et dossiers cachés
RewriteRule (^\.|/\.) - [F,L]

9. Protéger wp-includes avec le htaccess WordPress sécurité

Le dossier wp-includes contient le cœur de WordPress. Les fichiers qui s’y trouvent ne sont pas destinés à être appelés directement. Cette règle sécurité htaccess WordPress bloque l’accès direct :

# Bloquer l'accès direct à wp-includes
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]

10. Activer les en-têtes de sécurité via .htaccess

Si le module mod_headers est activé sur votre serveur, vous pouvez ajouter des en-têtes HTTP. Pour vérifier la compatibilité, référez-vous à la documentation officielle Apache mod_headers.

# En-têtes de sécurité
<IfModule mod_headers.c>
    Header always set X-Content-Type-Options "nosniff"
    Header always set X-Frame-Options "SAMEORIGIN"
    Header always set X-XSS-Protection "1; mode=block"
    Header always set Referrer-Policy "strict-origin-when-cross-origin"
    Header always set Permissions-Policy "geolocation=(), microphone=(), camera=(), payment=()"
</IfModule>

11. Limiter l’accès à l’administration par adresse IP

Si vous travaillez toujours depuis la même connexion, vous pouvez restreindre l’accès à la page de connexion WordPress à votre seule adresse IP. Une règle htaccess WordPress sécurité très efficace :

# Restreindre l'accès à wp-login.php par IP
<Files wp-login.php>
    Require ip 123.123.123.123
    Require ip 456.456.456.456
</Files>

Remplacez 123.123.123.123 par votre adresse IP publique.

12. Bloquer les requêtes sans User-Agent

De nombreux robots malveillants se font passer pour des navigateurs mais oublient d’envoyer un User-Agent. Les vrais navigateurs en envoient toujours un.

# Bloquer les requêtes sans User-Agent
RewriteCond %{HTTP_USER_AGENT} ^-?$
RewriteRule ^ - [F,L]

13. Bloquer les User-Agents connus comme malveillants

Voici une règle de sécurité htaccess WordPress qui bloque les outils d’attaque connus :

# Bloquer les User-Agents malveillants connus
RewriteCond %{HTTP_USER_AGENT} ^$ [OR]
RewriteCond %{HTTP_USER_AGENT} (havij|libwww-perl|wget|python|nikto|curl|scan|java|winhttp|clshttp|loader|fetch|extract|grab|miner|collector|screenshot) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} (acunetix|nmap|sqlmap|nessus|openvas|wpscan|metasploit|hydra|dirbuster|nikto) [NC]
RewriteRule .* - [F,L]

14. Limiter la taille des requêtes POST

Les attaques par force brute ou par déni de service envoient souvent des requêtes POST massives. Limitez leur taille :

# Limiter la taille des uploads et des requêtes POST
LimitRequestBody 10485760

Fichier complet sécurité htaccess WordPress : copiez ces 15 règles

Voici l’intégralité des règles rassemblées dans un fichier .htaccess complet, prêt à être copié. N’oubliez pas de tester bloc par bloc.

# ============================================
# PROTECTION DU FICHIER .HTACCESS
# ============================================
<Files .htaccess>
    Require all denied
</Files>

# ============================================
# PROTECTION DE WP-CONFIG.PHP
# ============================================
<Files wp-config.php>
    Require all denied
</Files>

# ============================================
# PROTECTION DES FICHIERS SENSIBLES
# ============================================
<FilesMatch "^(wp-config\.php|php\.ini|php5\.ini|\.htaccess|readme\.html|license\.txt|changelog\.txt|debug\.log)$">
    Require all denied
</FilesMatch>

# ============================================
# DÉSACTIVER L'AFFICHAGE DES RÉPERTOIRES
# ============================================
Options -Indexes

# ============================================
# BLOCAGE DE XMLRPC.PHP
# ============================================
<Files xmlrpc.php>
    Require all denied
</Files>

# ============================================
# EN-TÊTES DE SÉCURITÉ
# ============================================
<IfModule mod_headers.c>
    Header always set X-Content-Type-Options "nosniff"
    Header always set X-Frame-Options "SAMEORIGIN"
    Header always set X-XSS-Protection "1; mode=block"
    Header always set Referrer-Policy "strict-origin-when-cross-origin"
    Header always set Permissions-Policy "geolocation=(), microphone=(), camera=(), payment=()"
</IfModule>

# ============================================
# BLOCAGE DES CARACTÈRES SUSPECTS DANS LES URLS
# ============================================
RewriteCond %{QUERY_STRING} (\<|%3C)([^s]*s)+cript.*(\>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} (\<|%3C)([^i]*i)+mg.*(\>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} (\<|%3C)([^i]*i)+frame.*(\>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) [NC,OR]
RewriteCond %{QUERY_STRING} union([\s]+)?select [NC,OR]
RewriteCond %{QUERY_STRING} \\\[.*\\\] [NC,OR]
RewriteCond %{QUERY_STRING} (\<|%3C)([^e]*e)+mbed.*(\>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} (\<|%3C)([^o]*o)+bject.*(\>|%3E) [NC]
RewriteRule .* - [F,L]

# ============================================
# BLOCAGE DES USER-AGENTS MALVEILLANTS
# ============================================
RewriteCond %{HTTP_USER_AGENT} ^-?$ [OR]
RewriteCond %{HTTP_USER_AGENT} (havij|libwww-perl|wget|python|nikto|curl|scan|java|winhttp|clshttp|loader|fetch|extract|grab|miner|collector|screenshot) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} (acunetix|nmap|sqlmap|nessus|openvas|wpscan|metasploit|hydra|dirbuster|nikto) [NC]
RewriteRule .* - [F,L]

# ============================================
# BLOCAGE DE L'ACCÈS AUX FICHIERS CACHÉS
# ============================================
RewriteRule (^\.|/\.) - [F,L]

# ============================================
# PROTECTION DE WP-INCLUDES
# ============================================
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]

# ============================================
# LIMITATION DE LA TAILLE DES REQUÊTES
# ============================================
LimitRequestBody 10485760

# ============================================
# WORDPRESS - RÈGLES PAR DÉFAUT
# ============================================
# BEGIN WordPress

RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

# END WordPress

Conclusion : La sécurité htaccess WordPress, votre vigile silencieux

Le fichier .htaccess est l’arme de dissuasion la plus élégante de l’écosystème WordPress. Cette approche de sécurité htaccess WordPress bloque les menaces avant qu’elles n’atteignent votre site, sans consommer de ressources, sans ralentir vos pages, et sans dépendre d’un plugin qui devra être mis à jour.

Appliquez ces règles progressivement, testez votre site à chaque étape, et conservez toujours une copie de sauvegarde. Une fois en place, vous pourrez dormir plus tranquille en sachant qu’une grande partie des attaques automatisées sont arrêtées net, avant même d’avoir touché WordPress.

Ces règles .htaccess sont votre première ligne de défense. Pour une stratégie complète, découvrez aussi comment protéger votre référencement contre les pénalités liées au piratage.

La sécurité WordPress par .htaccess n’est jamais absolue, mais elle est cumulative. Chaque règle que vous ajoutez est une serrure supplémentaire sur votre porte d’entrée.

❓ Questions fréquentes sur la sécurité htaccess WordPress

Est-ce que ces règles htaccess WordPress sécurité fonctionnent sur tous les hébergeurs ?

Oui, ces règles de sécurité htaccess WordPress sont conçues pour les serveurs Apache avec le module mod_rewrite activé. Si votre site est hébergé chez un hébergeur classique (o2switch, Infomaniak, LWS, Hostinger, PlanetHoster), elles fonctionneront. Si vous êtes sur un serveur Nginx, le fichier .htaccess n’est pas utilisé et ces règles doivent être traduites dans la configuration Nginx.

Puis-je tout copier-coller d'un coup dans mon .htaccess ?

Techniquement oui, mais je vous le déconseille fortement. Testez bloc par bloc, en commençant par les règles les plus simples. Si votre site devient inaccessible, vous saurez immédiatement quel bloc pose problème.

Où se trouve le fichier .htaccess de mon site WordPress ?

Il se trouve à la racine de votre installation WordPress, dans le même dossier que les fichiers wp-config.php, wp-admin, wp-content. Connectez-vous à votre espace FTP ou au gestionnaire de fichiers de votre hébergeur, ouvrez le dossier public_html, et vous le trouverez. S’il n’apparaît pas, activez l’affichage des fichiers cachés.

Ces règles peuvent-elles ralentir mon site ?

Non. Contrairement aux plugins de sécurité qui s’exécutent dans WordPress, les règles .htaccess sont exécutées par le serveur web lui-même. Leur impact sur la vitesse est négligeable. C’est l’une des raisons pour lesquelles la sécurité htaccess WordPress est si efficace.

Que faire si mon site affiche une erreur 500 après modification ?

Ne paniquez pas. Connectez-vous en FTP, renommez le fichier .htaccess en .htaccess_backup, et votre site redeviendra immédiatement accessible. Ensuite, identifiez le bloc qui pose problème, corrigez-le ou supprimez-le, et remettez le fichier en place.

Auteur/autrice

  • Les articles de ce blog sont rédigés par l’équipe ETC Digital, spécialisée dans les solutions digitales et les technologies informatiques. Les contenus visent à partager des conseils, des analyses et des bonnes pratiques pour accompagner les entreprises dans leur transformation numérique.

Passez de lecteur à auteur

Créez votre compte et contribuez avec vos propres articles pour enrichir la communauté.

Recevez notre newsletter et ne manquez jamais nos conseils !