TL;DRLe formulaire de connexion de WordPress est la porte d'entrée la plus attaquée d'un site : des robots testent en continu des mots de passe sur wp-login.php et /wp-admin. Une protection par fichier .htpasswd ajoute un premier verrou, en amont de WordPress. Voici comment la mettre en place sans casser votre site, et une alternative plus simple : changer l'adresse de connexion avec un module dédié.
Pourquoi protéger l'administration de WordPress ?#
WordPress utilise partout les mêmes adresses : /wp-login.php et /wp-admin. Tout le monde les connaît, y compris les robots. Un site qui vient d'être mis en ligne reçoit très vite des tentatives de connexion automatiques, même s'il n'a aucune visibilité. Ces essais consomment des ressources serveur et, si un mot de passe est faible, finissent par aboutir.
L'authentification HTTP de base (« Basic Auth »), gérée par un fichier .htpasswd, place une barrière supplémentaire : le serveur exige un identifiant et un mot de passe avant de renvoyer la moindre page de connexion. Un robot qui n'a pas ces identifiants ne voit jamais le formulaire WordPress.
Ce dont vous avez besoin#
- Un site WordPress hébergé sur Apache (ou un serveur compatible avec les fichiers
.htaccess, comme LiteSpeed). Sur Nginx, les fichiers.htaccesssont ignorés : il faut passer par la configuration du serveur, avec les directivesauth_basicetauth_basic_user_file. - Un accès à vos fichiers (FTP, SFTP ou gestionnaire de fichiers de l'hébergeur) et idéalement un accès SSH.
- Le site en HTTPS : avec l'authentification de base, l'identifiant et le mot de passe transitent encodés, mais non chiffrés. Sans HTTPS, ils peuvent être interceptés.
Étape 1 : créer le fichier .htpasswd#
Le fichier contient une ligne par utilisateur, avec le mot de passe chiffré. Si vous avez un accès SSH, l'outil htpasswd (fourni avec Apache) le génère :
htpasswd -c -B /home/utilisateur/.htpasswd mon-identifiantL'option -c crée le fichier (à omettre pour ajouter un second utilisateur, sinon le fichier est écrasé), et -B chiffre le mot de passe avec bcrypt. L'outil vous demande le mot de passe deux fois.
Deux règles importantes :
- Placez le fichier en dehors du dossier public (par exemple un niveau au-dessus de
public_html), afin qu'il ne puisse jamais être téléchargé depuis le navigateur. - Évitez les « générateurs de .htpasswd » en ligne : vous y saisiriez un vrai mot de passe sur le site d'un tiers.
Notez le chemin absolu du fichier sur le serveur (il commence par /) : vous en aurez besoin à l'étape suivante.
Étape 2 : protéger la page de connexion wp-login.php#
Ouvrez le fichier .htaccess situé à la racine de votre site et ajoutez ce bloc, sans toucher aux règles WordPress existantes :
<Files wp-login.php>
AuthType Basic
AuthName "Accès réservé"
AuthUserFile /home/utilisateur/.htpasswd
Require valid-user
</Files>Remplacez le chemin de AuthUserFile par celui de votre fichier. Enregistrez, puis ouvrez /wp-login.php dans une fenêtre de navigation privée : le navigateur doit vous demander l'identifiant et le mot de passe avant d'afficher le formulaire WordPress.
Étape 3 : protéger le dossier /wp-admin (sans casser admin-ajax.php)#
Pour protéger aussi le tableau de bord, créez un fichier .htaccessdans le dossier wp-admin avec ce contenu :
AuthType Basic
AuthName "Accès réservé"
AuthUserFile /home/utilisateur/.htpasswd
Require valid-user
<Files admin-ajax.php>
Require all granted
</Files>L'exception sur admin-ajax.php est indispensable : ce fichier ne sert pas qu'à l'administration, il est aussi appelé côté public par de nombreux plugins et thèmes (formulaires, filtres, panier…). Le protéger par mot de passe casserait ces fonctions pour vos visiteurs. Si un formulaire du site public cesse de fonctionner après cette manipulation, vérifiez s'il passe par admin-post.php et ajoutez-le de la même façon.
Étape 4 : tester#
- Ouvrez
/wp-adminen navigation privée : le mot de passe du serveur doit être demandé, puis le formulaire de connexion WordPress apparaît. - Parcourez le site public et testez un formulaire ou une fonction dynamique : ils doivent continuer à fonctionner.
- Gardez une copie de vos anciens fichiers
.htaccess: en cas d'erreur 500, l'origine la plus fréquente est un cheminAuthUserFileincorrect ou non absolu.
Limites de la méthode#
- Un double mot de passe : vous saisirez l'identifiant du serveur, puis celui de WordPress. C'est le but, mais cela rallonge la connexion.
- Les utilisateurs qui se connectent via wp-login.php (clients d'une boutique, membres d'un site) seraient eux aussi bloqués. Dans ce cas, ne protégez pas cette page.
- Un fichier ajouté dans le dossier wp-admin n'est pas garanti après une mise à jour. Vérifiez que votre
.htaccessest toujours présent après chaque mise à jour de WordPress. - Le
.htpasswdne remplace ni les mises à jour, ni des mots de passe robustes, ni l'authentification à deux facteurs : il réduit la surface d'attaque, il ne corrige pas une faille dans un plugin.
Alternative : changer l'adresse de connexion avec un module#
Si vous préférez ne pas modifier de fichiers serveur, ou si vous n'avez pas d'accès SSH, une autre approche consiste à renommer l'URL d'accès au back-office. Le module gratuit WPS Hide Login remplace /wp-login.php et /wp-admin par une adresse de votre choix, par exemple /acces-equipe. Selon sa fiche officielle, il ne renomme pas les fichiers du noyau de WordPress et n'ajoute pas de règles de réécriture : il intercepte simplement les requêtes.
Mise en place#
- Dans WordPress, allez dans Extensions > Ajouter, recherchez « WPS Hide Login », puis installez et activez le module.
- Ouvrez Réglages > WPS Hide Login et saisissez la nouvelle adresse de connexion.
- Enregistrez, puis notez cette adresse dans un gestionnaire de mots de passe : les adresses
/wp-adminet/wp-login.phpne donneront plus accès au formulaire de connexion. - Testez la nouvelle adresse dans une fenêtre de navigation privée.
Si vous oubliez l'adresse#
Connectez-vous en FTP ou SFTP et renommez le dossier du module dans wp-content/plugins : WordPress le désactive et l'adresse habituelle redevient accessible.
Ce que ça change, et ce que ça ne change pas#
Changer l'adresse de connexion évite la plupart des tentatives automatiques, qui visent les adresses standard. Mais c'est une protection par discrétion : quelqu'un qui découvre la nouvelle adresse peut de nouveau tenter de se connecter. Elle s'ajoute donc à des mots de passe solides et à la double authentification, elle ne les remplace pas.
Quelle solution choisir ?#
| Critère | .htpasswd | Module de changement d'URL |
|---|---|---|
| Niveau d'intervention | Serveur web (fichiers .htaccess) | Extension WordPress |
| Compétence requise | Accès aux fichiers, un peu de technique | Aucune |
| Protection | Mot de passe exigé avant WordPress | Adresse de connexion non standard |
| Point de vigilance | Bloque aussi les connexions publiques sur wp-login.php | Ne pas perdre la nouvelle adresse |
Pour un site d'entreprise dont seuls quelques administrateurs se connectent, le .htpasswd est la protection la plus solide. Pour un site vitrine géré sans accès serveur, le changement d'adresse est le plus simple à déployer. Si vous combinez les deux, testez l'ensemble en navigation privée avant de considérer la configuration comme terminée. Besoin d'aide pour sécuriser votre site ? Découvrez notre expertise WordPress.
Questions fréquentes#
Le .htpasswd suffit-il à sécuriser WordPress ?#
Non. Il protège l'accès à la connexion, mais pas contre une faille dans un plugin ou un thème. Il doit s'accompagner de mises à jour régulières, de mots de passe robustes et idéalement d'une authentification à deux facteurs.
Pourquoi laisser admin-ajax.php accessible ?#
Parce que ce fichier est aussi utilisé côté public par de nombreux plugins et thèmes. Le protéger par mot de passe empêcherait leurs fonctions dynamiques de marcher pour vos visiteurs.
Où placer le fichier .htpasswd ?#
En dehors du dossier public du site, afin qu'il ne puisse pas être téléchargé depuis le navigateur. Le chemin indiqué dans AuthUserFile doit être absolu.
Le .htpasswd fonctionne-t-il sur Nginx ?#
Pas via .htaccess, que Nginx ne lit pas. Il faut configurer l'authentification dans le serveur avec auth_basic et auth_basic_user_file.
Que faire si j'ai oublié la nouvelle adresse de connexion ?#
Renommez le dossier du module dans wp-content/plugins par FTP : le module est désactivé et l'adresse WordPress par défaut redevient accessible.
Article rédigé le 28/09/2026 par l'équipe Websource à partir des sources citées ci-dessus, puis relu avant publication. Une information vous semble inexacte ou datée ? Signalez-le nous, nous corrigeons.







