web-dev-qa-db-fra.com

Wordpress REST Erreur API (wp-api) 404

J'utilise le plug-in WP-API de Wordpress REST depuis des mois alors que je développais localement avec XAMPP. J'ai récemment migré mon site vers une instance EC2 et tout fonctionne correctement sauf Je reçois maintenant un message 404 avec le message suivant chaque fois que j'essaie d'accéder à un noeud final de l'API:

L'URL demandée/wordpress/wp-json/n'a pas été trouvée sur ce serveur

De jolis permaliens sont activés avec la structure suivante http://.../wordpress/sample-post/ qui fonctionne correctement lors de la navigation vers une publication spécifique dans le navigateur.

Voici quelques détails sur ma configuration:

  • Wordpress 4.4.1
    • Pas un multisite
  • WP REST API plugin 2.0-beta9
  • Apache 2.2.22
  • Ubuntu 12.04.5

Toute aide serait grandement appréciée, car j’ai passé plusieurs heures sur les forums SO et WP et je suis à court d’idées. Je vous remercie!

18
dsal1951

NOUVELLE MISE À JOUR 

J'ai également rencontré un problème similaire dans un projet local. J'ai utilisé index.php après l'URL de mon projet et cela a fonctionné.

http://localhost/myproject/index.php/wp-json/wp/v2/posts

S'il affiche une erreur 404, alors met à jour les liens permanents en premier (voir la section "La navigation paginée ne fonctionne pas"

Si cela fonctionne, vous devez peut-être activer mod_rewrite sur ubuntu:

a2enmod rewrite
Sudo service Apache2 restart

Installation

L'API REST est incluse dans WordPress 4.7! Les plugins ne sont plus nécessaires, il suffit d'installer la dernière version de WordPress et vous êtes prêt.

Si vous êtes avant la 4.7:

  1. Téléchargez le plugin ici: http://v2.wp-api.org/

  2. installez et activez-le.

Usage

Pour obtenir tous les messages:

www.mysite.com/wp-json/wp/v2/posts

Pour la fonctionnalité de recherche, la recherche de test post ressemble à ceci:

/wp-json/wp/v2/posts?filter[s]=test
64
Jitendra IT

J'ai eu ce problème avec le dernier WordPress 4.7+. Dans mon cas, l’API REST ne fonctionnait qu’après que j’ai modifié le paramètre permaliens en un paramètre autre que "Plain", paramètre par défaut de mon installation. 

19
dlaub3

Il s’est avéré que la configuration d’Apache posait problème. 

Premièrement, j'ai supprimé le fichier .htaccess dans le répertoire racine de wordpress.

Ensuite, j'ai navigué vers /etc/Apache2/sites-enabled et ouvert 000-default

Toutes les variables AllowOverride ont été définies sur Aucune, que j'ai remplacées par All.

Cela a fait le tour!

12
dsal1951

Sous WPEngine et WP 4.9.2, il me suffisait de mettre à jour les permaliens pour que le site nouvellement installé vienne de renvoyer des appels v2 API. Ce que j'ai fait: 

  1. Créer un site
  2. Recherchez http://votresite.wpengine.com/wp-json/wp/v2/posts
    • obtenez 404
  3. Allez dans admin, paramètres, permaliens, choisissez "Nom du post"
  4. Cliquez sur "Enregistrer les modifications"
  5. Recherchez http://votresite.wpengine.com/wp-json/wp/v2/posts
    • succès. page affiche la réponse JSON
12
Andy Roberts

Je devais créer manuellement un .htaccess, le régler sur chmod 664 et y copier les règles de permalien.

J'ai aussi joué avec

  • Paramètres> Permaliens
  • Mettre à jour manuellement .htaccess via le code au bas de la page de permaliens après avoir cliqué sur "Enregistrer"
  • Ajout de "index.php" comme l’a suggéré une autre réponse
  • S'assurer que mod rewrite a été activé via a2enmod
1
Jacksonkr

J'ai résolu ce problème en procédant comme suit:

  1. Accédez à ..\Apache24\conf\httpd.conf et recherchez LoadModule rewrite_module modules/mod_rewrite.so.

  2. Activez le module de réécriture en supprimant la marque #.

  3. Remplacez tous les cas de AllowOverride None par AllowOverride All.

  4. N'oubliez pas de redémarrer le serveur Apache. :)

1
Patriotic

J'avais déplacé l'installation de WordPress d'un sous-répertoire à un autre. Dans mon cas, le problème était donc dû à la configuration de WordPress dans les fichiers .htaccess. Il essayait de rediriger chaque page sauf la page d'accueil vers l'ancien répertoire. C'était juste une question de mettre à jour olddir à newdir... Cela m'a fait trébucher plus d'une fois, alors j'ai pensé le mettre ici.

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /olddir/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /olddir/index.php [L]
</IfModule>

# END WordPress
0
mrtnmgs