Contexte
Après une mise à jour (plugin de cache + ajustements sécurité), un site WordPress a commencé à boucler sur la page de connexion: identifiants acceptés, puis retour immédiat sur wp-login.php sans message clair. Les visiteurs pouvaient parfois naviguer, mais l’accès administrateur devenait impossible, ce qui bloquait l’exploitation du site.
Symptômes observés
- Connexion
/wp-adminimpossible: redirection répétée verswp-login.php. - Comportement variable selon navigateur (cookies/cache) et selon réseau (CDN).
- Parfois, dashboard accessible quelques secondes, puis déconnexion.
- Dernier changement connu: réglages cache/CDN + plugin de sécurité.
Objectifs du dépannage
- Rétablir un accès admin stable.
- Identifier la cause: cookies, cache, URL, HTTPS, règle CDN ou plugin de sécurité.
- Corriger durablement sans désactiver la sécurité inutilement.
- Mettre en place une checklist de validation après mises à jour.
Diagnostic (pistes prioritaires)
- URLs WordPress incohérentes (http vs https, domaine avec/sans www).
- Cookies rejetés: domaine cookie incorrect, header mal configuré, SameSite.
- Cache qui met en cache des pages sensibles (login, admin, preview).
- CDN (Cloudflare): règle de cache agressive ou Rocket Loader.
- Sécurité: protection brute-force trop stricte ou blocage de cookies.
Exemple technique : forcer les URLs (wp-config.php)
Solution de stabilisation rapide, le temps de corriger proprement en base.
define('WP_HOME', 'https://www.exemple.ch');
define('WP_SITEURL', 'https://www.exemple.ch');
Exemple technique : corriger home/siteurl en base (WP-CLI)
Approche propre, surtout après migration ou changement HTTPS.
wp option get home
wp option get siteurl
wp option update home "https://www.exemple.ch"
wp option update siteurl "https://www.exemple.ch"
Exemple technique : exclure login/admin du cache (règles)
À configurer dans le plugin de cache et côté CDN si nécessaire.
Exclusions cache:
- /wp-admin/*
- /wp-login.php
- /wp-json/*
- ?preview=true
- /cart/ /checkout/ (si WooCommerce)
Exemple technique : désactiver Rocket Loader (Cloudflare) sur wp-admin
Peut éviter des comportements JS bizarres sur login.
Cloudflare Rules:
If URL contains /wp-admin or /wp-login.php
- Disable performance features (Rocket Loader)
- Bypass cache
Exemple technique : cookie domain (cas particuliers)
Utile en multi-domaines ou sous-domaines. À manier avec prudence.
define('COOKIE_DOMAIN', 'exemple.ch');
Cause identifiée
Dans ce cas, un mélange de deux éléments causait la boucle: (1) une incohérence entre home et siteurl (http/https), et (2) une règle de cache/CDN qui ne bypassait pas correctement la page de login. Le navigateur recevait des cookies de session non fiables, entraînant une déconnexion immédiate.
Correctifs appliqués
- Alignement strict de
homeetsiteurlsur une seule URL HTTPS. - Bypass cache pour
/wp-login.phpet/wp-admin(plugin + Cloudflare). - Contrôle des règles sécurité (limites de tentative, protections agressives) sans les supprimer.
- Purge cache complète (plugin + CDN), puis test en navigation privée.
- Validation sur 2 navigateurs, et test d’une session prolongée.
Résultats
- Accès admin restauré et stable.
- Sessions persistantes, plus de redirections en boucle.
- Cache et sécurité conservés, mais configurés de manière compatible avec l’admin.
Prévention mise en place
- Checklist après modifications cache/CDN: login, admin, formulaire, pages clés.
- Règles Cloudflare documentées (bypass admin, exclusions WooCommerce si besoin).
- Contrôle trimestriel des URLs WordPress lors de changements DNS/HTTPS.
- Routine de maintenance: mises à jour par lots, tests rapides, sauvegarde avant.
Points clés à retenir
- Une boucle de connexion WordPress est presque toujours liée aux cookies, au cache ou aux URLs.
- La correction la plus robuste consiste à aligner
home/siteurlet à exclure l’admin du cache. - Tester en navigation privée évite les faux diagnostics liés au cache navigateur.