Vous construisez un bloc. Vous connectez un frontend headless. Ou vous essayez simplement d’utiliser l’éditeur de site. Tout semble correct. Puis vous ouvrez la console du navigateur et vous voyez :
GET /wp-json/wp/v2/posts → 404 Not Found
Ou pire :
403 Forbidden
L’API REST de WordPress devrait fonctionner par défaut. Mais parfois, ce n’est pas le cas. Et les messages d’erreur peuvent être trompeurs.
Ce guide explique pourquoi les requêtes à l’API REST échouent avec des erreurs 404 ou 403 — même quand vous n’avez rien fait de mal — et comment les corriger.
L’API REST de WordPress est un outil puissant. Elle permet aux applications externes (et à l’éditeur de blocs) d’interagir avec votre site.
Ce qui devrait arriver :
https://votresite.com/wp-json/ devrait renvoyer un objet JSONhttps://votresite.com/wp-json/wp/v2/posts devrait renvoyer une liste d’articlesCe qui arrive parfois en réalité :
L’essentiel à comprendre : les erreurs 404 et 403 sur les endpoints de l’API REST ne sont généralement pas des problèmes d’authentification. Ce sont presque toujours des problèmes de configuration du serveur.
| Erreur | Signification | Cause la plus fréquente |
|---|---|---|
| 404 | Endpoint non trouvé | Permaliens, .htaccess ou configuration Nginx |
| 403 | Accès refusé | ExtensionUn logiciel qui ajoute des fonctionnalités spécifiques à ... More de sécurité, pare-feu de l’hébergement ou règles serveur |
Un 404 sur wp-json signifie que le serveur ne reconnaît pas les routes de l’API REST. La requête atteint WordPress, mais quelque chose bloque les règles de réécriture.
L’API REST nécessite des permaliens « jolis ». Si vos permaliens sont en mode « simple » (?p=123), les routes REST renvoient une 404.
Vérification : Réglages → Permaliens → Une option autre que « Simple » est-elle sélectionnée ?
Correction : Sélectionnez n’importe quelle option autre que « Simple » (par exemple « Titre de l’articleUn contenu dynamique et temporel (ex. : billets de blog) aff... More ») et cliquez sur Enregistrer les modifications.
Pourquoi ça fonctionne : Enregistrer les permaliens régénère le fichier .htaccess (Apache) ou vide les règles de réécriture.
Sur les serveurs Apache, les règles de réécriture se trouvent dans .htaccess. Si ce fichier est manquant ou corrompu, les routes REST renvoient une 404.
Correction via WordPress :
Correction via FTP :
.htaccess (activez l’affichage des fichiers cachés si nécessaire)apache
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Si vous utilisez Nginx, vous avez besoin de règles de réécriture explicites. La configuration Nginx standard pour WordPress doit inclure :
nginx
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ ^/wp-json/ {
try_files $uri $uri/ /index.php?$args;
}
Correction : Ajoutez le bloc location pour wp-json à votre configuration Nginx, puis rechargez Nginx (sudo systemctl reload nginx).
Vous n’avez pas accès ? Contactez votre support d’hébergement et demandez-leur de vérifier que les règles de réécriture de l’API REST sont en place.
Certaines extensions désactivent intentionnellement l’API REST pour des raisons de « sécurité » (ce qui est généralement inutile et casse des fonctionnalités).
Coupables courants :
Correction :
https://votresite.com/wp-json/Certains hébergements WordPress gérés bloquent l’accès à l’API REST pour les utilisateurs non authentifiés par défaut. C’est rare, mais cela arrive.
Correction : Contactez votre hébergeur et demandez :
« L’API REST WordPress est-elle activée pour les requêtes non authentifiées ? J’obtiens une 404 sur
/wp-json/. »
Une erreur 403 signifie que le serveur a compris la requête mais refuse de l’exécuter. C’est généralement un problème d’authentification ou de sécurité.
La plupart des extensions de sécurité ont une fonctionnalité pour bloquer l’accès à l’API REST pour les utilisateurs non connectés.
Vérifiez dans les réglages de votre extensionUn logiciel qui ajoute des fonctionnalités spécifiques à ... More de sécurité :
Correction : Ajoutez à la liste blanche les endpoints spécifiques dont vous avez besoin, ou désactivez complètement le blocage de l’API REST (cela n’améliore pas vraiment la sécurité dans la plupart des cas).
Extensions populaires avec restrictions REST :
Certains hébergeurs utilisent ModSecurity ou d’autres WAF (pare-feu applicatifs web) qui bloquent les requêtes à l’API REST contenant certains motifs.
Motifs courants qui déclenchent des blocages :
Correction :
wp-json/* à la liste blancheDes règles .htaccess personnalisées peuvent explicitement bloquer l’accès à wp-json.
Vérifiez votre .htaccess pour :
apache
Deny from all
<Files "wp-json">
Deny from all
</Files>
Correction : Supprimez toutes les règles qui bloquent wp-json ou l’API REST.
Certains endpoints de l’API REST nécessitent une authentification :
edit_posts)moderate_comments)list_users)Si vous appelez ces endpoints sans authentification, vous obtiendrez une 403.
Correction : Ajoutez une authentification à vos requêtes :
wpApiSettings.nonceExemple d’ajout de nonce à une requête fetch :
javascriptUn langage de programmation utilisé pour créer des éléme... More
fetch('/wp-json/wp/v2/posts', {
headers: {
'X-WP-Nonce': wpApiSettings.nonce
}
})
Les CDN et pare-feux bloquent parfois les requêtes à l’API REST, surtout si elles contiennent des charges utiles JSON.
Correction :
*/wp-json/*Suivez cette liste de vérification dans l’ordre. Testez après chaque étape.
Étape 1 : Testez l’endpoint REST de base
https://votresite.com/wp-json/ dans votre navigateurname, description, url, etc.Étape 2 : Enregistrez les permaliens
Étape 3 : Désactivez toutes les extensions
https://votresite.com/wp-json/Étape 4 : Basculez vers un thème par défaut
Étape 5 : Vérifiez votre fichier .htaccess
.htaccess dans votre racine WordPressÉtape 6 : Vérifiez les règles de réécriture du serveur (Nginx uniquement)
location pour wp-jsonÉtape 7 : Vérifiez les extensions de sécurité
Étape 8 : Vérifiez le pare-feu de votre hébergement
/wp-json/* à la liste blancheÉtape 9 : Activez le débogage WordPress
Ajoutez à wp-config.php :
php
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
Consultez ensuite wp-content/debug.log pour les erreurs liées à l’API REST.
https://votresite.com/wp-json/bash
curl https://votresite.com/wp-json/wp/v2/posts
Résultat attendu : tableau JSON d’articles (peut être vide).
bash
curl -I https://votresite.com/wp-json/
Attendu : HTTP/1.1 200 OK (pas 404, 403 ou 301/302).
bash
curl -X GET https://votresite.com/wp-json/wp/v2/users/me \ --header 'X-WP-Nonce: VOTRE_NONCE' \ --cookie 'wordpress_logged_in_VOTRE_HASH'
Pour 404 :
bash
# Enregistrez les permaliens (visitez cette URL connecté) https://votresite.com/wp-admin/options-permalink.php
Pour 403 (Wordfence) :
Pour 403 (Nginx + règles manquantes) :
nginx
location ~ ^/wp-json/ {
try_files $uri $uri/ /index.php?$args;
}
Pour tout problème REST :
Les erreurs 404 et 403 de l’API REST sont presque toujours des problèmes de configuration serveur ou d’extensions de sécurité — pas des bugs de WordPress lui-même.
La règle d’or : Commencez par enregistrer les permaliens. C’est simple, rapide et corrige 50% des erreurs 404.
Si cela ne fonctionne pas, désactivez toutes les extensions et basculez vers un thème par défaut. Cela permet d’isoler si le problème vient de votre configuration ou de votre environnement d’hébergement.
Et rappelez-vous : La plupart des erreurs 403 sont des extensions de sécurité qui font leur travail de manière trop agressive. Vérifiez les paramètres de l’API REST de votre extensionUn logiciel qui ajoute des fonctionnalités spécifiques à ... More de sécurité avant de supposer que quelque chose d’autre est cassé.