# Erreur 429 Too Many Requests sur WordPress : solutions

> Erreur 429 Too Many Requests sur WordPress : identifiez qui limite le débit (nginx, WAF, CDN, API tierce), débloquez votre IP et réglez la limite.

- Auteur : WordPress Développement
- Publié le : 2026-10-02
- Mis à jour le : 2026-10-02
- URL : https://www.wpmoderne.fr/erreurs-wordpress/erreur-429/

> Vous (ou un robot sur votre adresse IP) avez envoyé trop de requêtes en peu de temps : une limitation de débit (nginx, WAF, CDN, extension de sécurité) vous bloque. Patientez le temps indiqué par Retry-After, puis ajustez la règle.

La page répond « 429 Too Many Requests », ou un message équivalent d’un CDN ou d’une API (« Rate limit exceeded »). Ce n’est pas une panne : le serveur fonctionne, mais il refuse de traiter **votre** requête parce qu’il en a reçu trop, trop vite, depuis la même adresse IP, le même compte ou la même clé d’API.

L’erreur peut vous toucher en visiteur (un robot partage votre adresse, vous avez rechargé la page en rafale), en administrateur (tentatives de connexion répétées, outil de supervision trop zélé) ou en développeur (votre site interroge une API qui limite le nombre d’appels).

## Ce que signifie cette erreur

Le code 429 est défini par la spécification HTTP pour la limitation de débit. WordPress le connaît (`wp-includes/functions.php` associe 429 à « Too Many Requests », et la classe `WP_Http` le déclare comme constante `TOO_MANY_REQUESTS`, dans `wp-includes/class-wp-http.php`), mais le cœur ne l’utilise qu’une fois : pour **limiter les commentaires**. Dans `wp-includes/comment.php`, `wp_throttle_comment_flood()` bloque un nouveau commentaire envoyé moins de 15 secondes après le précédent, et le visiteur lit « Vous envoyez vos commentaires trop rapidement. Prenez votre temps. » (`wp_die()` avec le code 429).

Partout ailleurs, le 429 vient de l’infrastructure ou d’un service tiers :

- **nginx** : une zone `limit_req` ou `limit_conn` avec `limit_req_status 429` (sans ce réglage, nginx répond 503 : voir la fiche [erreur 503](https://www.wpmoderne.fr/erreurs-wordpress/erreur-503/)) ;
- **Un pare-feu applicatif ou un CDN** qui applique des règles de limitation par adresse IP ou par chemin ;
- **Une extension de sécurité WordPress** qui bloque temporairement les IP après trop de tentatives de connexion ou de requêtes ;
- **Votre hébergeur**, qui plafonne les requêtes par seconde sur certaines offres ;
- **Une API tierce** (e-mailing, intelligence artificielle, recherche, géolocalisation) appelée par votre site : c’est WordPress qui reçoit le 429, et non le visiteur.

## Diagnostic rapide

| Symptôme / constat | Cause probable | À vérifier |
| --- | --- | --- |
| 429 dès la première requête, depuis un seul réseau | Votre IP (ou celle de votre réseau d’entreprise) est limitée ou bannie | Test depuis un autre réseau ; liste des bans (fail2ban, CDN, extension) |
| 429 après plusieurs rechargements rapides | Limitation de débit normale | En-tête `Retry-After` ; règle `limit_req` |
| 429 sur `wp-login.php` ou `xmlrpc.php` | Protection contre la force brute | Extension de sécurité ; règle du WAF |
| 429 sur `admin-ajax.php` ou l’API REST | Appels répétés d’un script du site ou d’une extension | Journal d’accès, nombre de requêtes par minute |
| Message « Vous envoyez vos commentaires trop rapidement » | Limite de commentaires de WordPress (15 secondes) | Délai entre deux commentaires ; extension anti-spam |
| Le 429 figure dans le journal PHP (réponse d’une API) | Quota ou débit de l’API tierce dépassé | En-tête `Retry-After` de l’API ; tableau de bord du service |

## Les causes les plus fréquentes

1. **Des robots d’exploration** (moteurs, outils SEO, robots d’entraînement d’IA) qui enchaînent les requêtes et épuisent le quota de leur IP ou de la vôtre.
2. **Une règle de limitation trop stricte** sur nginx, le WAF ou le CDN, qui traite un visiteur légitime en rafale (chargement d’une page avec beaucoup de ressources) comme un abus.
3. **La protection anti-force brute** qui bloque après des échecs de connexion répétés.
4. **Une extension ou un script qui boucle** : appels répétés à `admin-ajax.php`, à l’API REST ou à un service externe.
5. **Un quota d’API tierce dépassé**, par exemple après un import ou une campagne qui multiplie les appels.
6. **Une adresse IP partagée** (réseau d’entreprise, VPN, NAT d’opérateur) dont un autre utilisateur a épuisé le quota.

## Solutions pas à pas

Un 429 est temporaire par nature. Du moins invasif au plus technique :

### 1. Patienter, puis réessayer calmement

Lisez l’en-tête `Retry-After` quand il existe : il donne le nombre de secondes à attendre. Vous pouvez le voir avec :

```
curl -sI https://www.exemple.fr/wp-login.php | head -n 12
```

Attendez ce délai, évitez de recharger en rafale et déconnectez-vous d’un éventuel VPN. Si le blocage persiste, essayez depuis un autre réseau pour savoir si c’est votre adresse qui est en cause.

### 2. Identifier qui applique la limite

Le journal d’erreurs de nginx contient une ligne « limiting requests, excess: … by zone … » pour chaque requête rejetée, avec le nom de la zone ; cherchez-la, puis cherchez ce nom dans la configuration :

```
sudo grep -i 'limiting requests' /var/log/nginx/error.log | tail -n 5
sudo grep -rn 'limit_req' /etc/nginx/
# Quelles IP font le plus de requêtes ?
sudo awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head
```

Si rien n’apparaît côté serveur, la limite vient d’un intermédiaire : consultez les journaux de sécurité du CDN, du WAF ou de l’extension de sécurité. Pour comprendre qui sont les visiteurs en rafale, lisez [crawlers IA qui saturent le serveur](https://www.wpmoderne.fr/performance/crawlers-ia-saturent-serveur-limiter-charge/).

### 3. Débloquer une adresse IP

Avec fail2ban, retirez l’adresse de la prison concernée :

```
sudo fail2ban-client status
sudo fail2ban-client set nom-de-la-prison unbanip 203.0.113.10
```

Avec un CDN, un WAF ou une extension de sécurité, ajoutez l’adresse à la liste d’autorisation dans l’interface. Si le message est « Forbidden » et non plus « Too Many Requests », il s’agit d’un blocage différent : voyez la fiche [erreur 403](https://www.wpmoderne.fr/erreurs-wordpress/erreur-403/). Sans accès à l’administration, désactivez l’extension de sécurité en renommant son dossier dans `wp-content/plugins/` par SFTP, le temps de vous reconnecter.

### 4. Régler la limite nginx

Une limite doit absorber une page normale (HTML plus ressources). Utilisez une rafale (`burst`) cohérente, et répondez 429 plutôt que 503 pour que les clients sachent qu’il faut ralentir :

```
# bloc http
limit_req_zone $binary_remote_addr zone=wpm_req:10m rate=10r/s;

# bloc server
location / {
    limit_req zone=wpm_req burst=30 nodelay;
    limit_req_status 429;
    try_files $uri $uri/ /index.php?$args;
}
```

Vérifiez avec `sudo nginx -t`, puis `sudo systemctl reload nginx`. Si votre propre supervision ou votre outil d’import dépasse la limite, donnez-lui une adresse en liste d’autorisation plutôt que d’augmenter la limite pour tout le monde.

### 5. Respecter le 429 d’une API tierce

Si c’est votre site qui reçoit le 429, ne réessayez pas immédiatement : cela aggrave la situation. Lisez `Retry-After` et reprogrammez l’appel :

```
$reponse = wp_remote_get( $url, array( 'timeout' => 15 ) );

if ( 429 === wp_remote_retrieve_response_code( $reponse ) ) {
    $attente = (int) wp_remote_retrieve_header( $reponse, 'retry-after' );
    $attente = max( 60, $attente ); // au moins une minute
    wp_schedule_single_event( time() + $attente, 'mon_hook_reprise', array( $url ) );
    return;
}
```

Une stratégie complète (attente exponentielle, file d’attente, plafond de reprises) est décrite dans [429 Too Many Requests d’une API de LLM](https://www.wpmoderne.fr/ia-mcp/429-too-many-requests-api-llm-reprise/). Si l’API de recherche ou d’e-mailing a un quota, mesurez votre consommation avant la prochaine campagne, comme dans [Rate limit exceeded sur Algolia](https://www.wpmoderne.fr/outils/rate-limit-exceeded-algolia-charge-imprevue-media/).

### 6. Traiter les commentaires en rafale

Le message « Vous envoyez vos commentaires trop rapidement » vient de WordPress. Le délai de 15 secondes est un garde-fou contre le spam. Si vos rédacteurs répondent à plusieurs commentaires de suite, prévenez-les d’attendre ; si vous gérez un site à fort trafic, vous pouvez remplacer le test via le filtre `comment_flood_filter`.

## Prévenir l’erreur

- Renvoyez toujours **429 avec un en-tête `Retry-After`** plutôt qu’un 503 muet : les clients bien conçus ralentissent.
- Calibrez les limites sur le chargement réel d’une page (HTML, scripts, images), pas sur une seule requête.
- Mettez vos propres outils (supervision, import, sauvegardes distantes) en liste d’autorisation.
- Mettez en cache les appels d’API tierces (transients) pour réduire le nombre de requêtes sortantes.
- Limitez les robots inutiles via `robots.txt` et des règles par User-Agent avant de durcir les limites pour tous.
