Tu vois “429 Too Many Requests” — voici ce qui se passe
Le site répond mais renvoie une page blanche avec “429 Too Many Requests”, ou pire, il charge normalement pour toi et bloque tous tes vrais visiteurs. Cette erreur signifie qu’un composant de la chaîne — ton hébergeur, un CDN, un plugin de sécurité, ou l’API REST de WordPress — a décidé qu’une IP (ou un user agent) envoyait trop de requêtes sur une trop courte période, et l’a mise en liste de blocage temporaire.
C’est gérable. Dans la majorité des cas, 20 à 40 minutes de diagnostic suffisent à identifier la source et à corriger sans rien désactiver de critique.
Pourquoi ça arrive : les 4 sources habituelles
- Limitation de débit côté hébergeur : les offres mutualisées (O2Switch, Hostinger, Ionos partagé…) imposent des seuils de requêtes par minute ou par heure sur PHP, l’API REST ou le cron WordPress. Une fois le seuil atteint, le serveur répond 429 le temps que la fenêtre temporelle se réinitialise.
- Bots et scrapers : un bot d’indexation agressif, un concurrent qui scrape tes prix, ou un attaquant qui teste des credentials sur
/wp-login.phppeut déclencher des centaines de requêtes en quelques secondes. Ton hébergeur ou ton pare-feu applicatif coupe automatiquement. - Plugin de sécurité trop strict : Wordfence, iThemes Security ou Solid Security embarquent leur propre rate limiter. Si le seuil est configuré trop bas (ex. 10 requêtes par minute sur l’API REST), un simple utilisateur mobile avec une connexion instable peut se retrouver banni.
- Boucle de login interne : certains plugins (WooCommerce, LMS, membership) rappellent l’API REST WordPress en boucle lors de l’authentification ou du rafraîchissement de token. Le site se rate-limite lui-même — c’est le cas le plus trompeur car ce n’est pas un visiteur externe qui déclenche le blocage.
Solution 1 — Identifier l’origine exacte (5 minutes)
Avant de modifier quoi que ce soit, ouvre l’onglet Réseau de DevTools (F12 → Network), recharge la page en erreur et repère la requête qui retourne 429. Regarde :
- Les headers de réponse :
X-RateLimit-Limit,Retry-After,CF-RAY(Cloudflare),X-Sucuri-ID(Sucuri). Chaque solution laisse une empreinte différente. - L’URL bloquée :
/wp-login.php→ attaque de login ;/wp-json/...→ API REST ; une URL de ressource statique → CDN ou hébergeur. - Le code précis dans les logs : connecte-toi en SSH ou via le gestionnaire de fichiers de ton hébergeur, consulte
wp-content/debug.log(siWP_DEBUG_LOGest actif) et les access logs Apache/Nginx.
Cette étape évite de corriger la mauvaise couche et d’ouvrir une faille sur une autre.
Solution 2 — Débloquer une IP légitimement bannie
Si toi ou un client précis es bloqué :
Wordfence : Tableau de bord WordPress → Wordfence → Firewall → Blocked IPs. Repère l’IP, clique “Unblock”. Si l’IP revient en permanence, augmente le seuil dans Firewall Options → Rate Limiting (ex. passe “Human requests” de 120 à 240/minute).
Cloudflare : Security → WAF → Tools → IP Access Rules. Cherche la règle qui bloque l’IP et supprime-la, ou crée une règle “Allow” pour ton IP de bureau.
Hébergeur (Nginx/Apache) : certains panels (cPanel, Plesk) ont une section “ModSecurity” ou “IP Blocker”. Sinon, contacte le support — ils peuvent vider le cache de rate-limiting côté serveur.
Solution 3 — Stopper les attaques sur wp-login.php
La protection la plus efficace sans plugin lourd :
Ajouter une authentification HTTP basique sur wp-login.php via .htaccess (hébergements Apache) :
<Files wp-login.php>
AuthType Basic
AuthName "Accès restreint"
AuthUserFile /chemin/absolu/.htpasswd
Require valid-user
</Files>
Génère ton .htpasswd via un outil en ligne ou htpasswd -c .htpasswd tonnom. Ce fichier doit être hors du webroot ou protégé.
Résultat : un bot qui martèle /wp-login.php reçoit un 401 dès la première couche, bien avant que WordPress charge, et ne consomme plus de quota de requêtes PHP.
Solution 4 — Corriger un rate limit trop agressif sur l’API REST
Si l’URL bloquée contient /wp-json/, c’est l’API REST. Deux scénarios :
Plugin de sécurité trop strict : dans Wordfence → Firewall → All Options, cherche “Throttle API requests” et monte la valeur. Commence à 120 req/min avant de valider.
Hébergeur qui limite les requêtes PHP : contacte ton hébergeur avec les logs en main. Sur O2Switch, la limite est configurable depuis cPanel → “Limit d’entrées PHP”. Sur les offres cloud (Kinsta, WP Engine), les règles de rate limiting sont dans leur dashboard dédié.
Désactiver l’API REST pour les non-connectés (option agressive, à peser selon ton projet) : certains plugins comme Disable REST API le font en un clic. Attention : WooCommerce, Gutenberg et bon nombre de plugins en ont besoin — teste toujours en staging.
Solution 5 — Traiter la boucle de login interne
Si le 429 apparaît uniquement lors de la connexion ou en back-office, active le mode debug pour isoler le plugin responsable :
- Ajoute dans
wp-config.php:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
- Désactive les plugins un par un (ou en bloc via FTP en renommant le dossier
plugins→plugins_off) pour identifier le fautif. - Une fois identifié, cherche dans sa documentation si une option “heartbeat” ou “token refresh interval” est configurable. WooCommerce, par exemple, permet de réduire la fréquence de vérification de session.
Pour les problèmes de plugins plus larges, la méthode de rollback propre après une MAJ cassée suit le même principe d’isolation.
Tableau récapitulatif : cause → solution
| Origine | Signal dans les logs | Action |
|---|---|---|
| Attaque sur wp-login.php | Centaines de POST sur /wp-login.php | Auth HTTP basique + ban IP via Wordfence/Cloudflare |
| Plugin sécurité trop strict | X-RateLimit-Limit dans les headers | Monter le seuil ou débloquer l’IP |
| Hébergeur mutualisé | 429 sur toutes les pages, sans header identifiant | Contacter l’hébergeur, passer sur une offre dédiée |
| Boucle interne (plugin) | 429 uniquement en back-office/connexion | Désactiver les plugins un par un, ajuster le heartbeat |
| CDN (Cloudflare, BunnyCDN) | Header CF-RAY ou X-CDN présent | Règle “Allow” pour IP de confiance dans le dashboard CDN |
Le 429 peut-il affecter le SEO ?
Oui, si Googlebot reçoit des 429 répétés sur tes URLs, il réduira sa fréquence de crawl et peut désindexer des pages. Vérifie la Google Search Console → Couverture pour repérer les erreurs de crawl. Un travail sur la performance et les Core Web Vitals réduit aussi le nombre de requêtes par visite, ce qui diminue la pression sur les seuils.
Mon hébergeur mutualisé déclenche le 429 sans qu'il y ait d'attaque. Que faire ?
Les offres mutualisées ont des quotas bas par conception. Si ton site a un trafic réel et régulier, la bonne question n’est pas comment contourner la limite, c’est si l’hébergement est adapté. Un VPS ou une offre cloud WordPress dédiée règle le problème structurellement. Voir aussi combien coûte vraiment un site en 2026 pour calibrer le budget hébergement.
Désactiver l'API REST WordPress est-il risqué ?
Oui si tu utilises Gutenberg, WooCommerce ou tout plugin moderne. Ces outils dépendent de l’API REST pour fonctionner. La désactivation totale pour les visiteurs non connectés est viable sur un site vitrine simple, mais à tester impérativement sur un environnement de staging avant la mise en production.
Cloudflare peut-il déclencher un 429 sans que WordPress soit en cause ?
Oui. Cloudflare a son propre rate limiter (Rules → Rate Limiting Rules), indépendant de WordPress. Si une règle WAF est trop agressive, elle bloque avant même que la requête atteigne ton serveur. Le header CF-RAY dans la réponse 429 confirme que c’est Cloudflare qui bloque. La correction se fait entièrement dans le dashboard Cloudflare, WordPress n’a rien à voir.
Quand passer la main à un pro
Si après ces étapes le 429 revient en boucle sans source identifiable, si tes logs montrent un volume d’attaque soutenu (plusieurs milliers de requêtes par heure), ou si le problème touche un site e-commerce avec des transactions en cours — c’est le moment de déléguer. Un plan de maintenance avec surveillance proactive détecte ce type d’anomalie avant qu’elle impacte les visiteurs. Et si tu n’as pas les accès serveur pour agir, commence par réclamer tous tes accès à ton agence actuelle — sans logs, tu travailles à l’aveugle.
Ce problème, Peechy s'en occupe
Plutôt que de tout gérer seul, confiez votre site à une agence qui s'occupe de tout — hébergement, sécurité, maintenance et corrections. Encore plus simple en abonnement : on règle les soucis avant même que vous les remarquiez.
Confier mon site à Peechy