wake-up-neo.net

Wordpress REST API (wp-api) 404 Fehler

Bei der lokalen Entwicklung mit XAMPP habe ich bereits seit Monaten das Plug-In für das WP-Plugin REST von WP-API verwendet. Ich habe kürzlich meine Website zu einer EC2-Instanz migriert und alles funktioniert gut außer Ich bekomme jetzt eine 404 mit der folgenden Meldung, wenn ich versuche, auf einen Endpunkt der API zuzugreifen:

Die angeforderte URL/wordpress/wp-json/wurde auf diesem Server nicht gefunden

Ziemlich Permalinks sind aktiviert mit der folgenden Struktur http://.../wordpress/sample-post/, die gut funktioniert, wenn Sie zu einem bestimmten Beitrag im Browser navigieren.

Hier sind einige Details zu meinem Setup:

  • Wordpress 4.4.1
    • Kein Multisite
  • WP REST API-Plugin 2.0-Beta9
  • Apache 2.2.22
  • Ubuntu 12.04.5

Jede Hilfe wäre sehr dankbar, da ich einige Stunden SO und die WP Support-Foren durchgegangen bin und keine Ideen mehr habe. Vielen Dank!

18
dsal1951

AKTUALISIERTE NEUE WEISE 

Ich hatte auch ein ähnliches Problem in einem lokalen Projekt. Ich habe index.php nach meiner Projekt-URL verwendet und es hat funktioniert.

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

Wenn ein Fehler 404 angezeigt wird, dann Update Permalinks zuerst (siehe Abschnitt "Seitliche Navigation funktioniert nicht")

Wenn es funktioniert, müssen Sie möglicherweise mod_rewrite auf ubuntu aktivieren:

a2enmod rewrite
Sudo service Apache2 restart

Installation

Die REST - API ist in WordPress 4.7 enthalten! Plugins sind nicht mehr erforderlich. Installieren Sie einfach die neueste Version von WordPress und Sie können loslegen.

Wenn Sie vor 4.7 sind:

  1. Laden Sie das Plugin hier herunter: http://v2.wp-api.org/

  2. installieren und aktivieren.

Verwendungszweck

Um alle Beiträge zu erhalten:

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

Für die Suchfunktion sieht die Suche nach einem Testbeitrag folgendermaßen aus:

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

Ich hatte dieses Problem mit dem neuesten WordPress 4.7 und höher. In meinem Fall funktionierte die API REST erst, nachdem ich die Permalinks-Einstellung auf etwas anderes als "Plain" geändert hatte. Dies war die Standardeinstellung für meine Installation. 

19
dlaub3

Es stellte sich als Problem mit der Apache-Konfiguration heraus. 

Zuerst löschte ich die .htaccess-Datei im Stammverzeichnis von wordpress.

Als Nächstes navigierte ich zu /etc/Apache2/sites-enabled und öffnete 000-default

Alle Variablen der Variable AllowOverride wurden auf None gesetzt, die ich durch die Variable All ersetzt habe.

Das hat den Trick gemacht!

12
dsal1951

Unter WPEngine und WP 4.9.2 musste ich nur Permalinks aktualisieren, um eine neu installierte Site zu erhalten, um v2-API-Aufrufe zurückzugeben. Was ich getan habe: 

  1. Site erstellen
  2. Navigieren Sie zu http://Ihresitename.wpengine.com/wp-json/wp/v2/posts
    • bekomme 404
  3. Gehe zu Admin, Einstellungen, Permalinks, wähle "Post Name"
  4. Klicken Sie auf "Änderungen speichern".
  5. Navigieren Sie zu http://Ihresitename.wpengine.com/wp-json/wp/v2/posts
    • erfolg. Seite zeigt JSON-Antwort
12
Andy Roberts

Ich musste einen .htaccess manuell erstellen, auf chmod 664 setzen und die Permalink-Regeln hinein kopieren.

Ich habe auch mit rumgespielt

  • Einstellungen> Permalinks
  • Manuelles Aktualisieren von .htaccess über den Code unten auf der Permalinks-Seite nach dem Klicken auf "Speichern".
  • Das Hinzufügen von "index.php" als eine der anderen Antworten schlägt vor
  • Stellen Sie sicher, dass mod rewrite über a2enmod aktiviert wurde.
1
Jacksonkr

Ich habe dieses Problem durch folgende Schritte gelöst:

  1. Navigieren Sie zu ..\Apache24\conf\httpd.conf und suchen Sie nach LoadModule rewrite_module modules/mod_rewrite.so.

  2. Aktivieren Sie das Überschreibmodul, indem Sie die Markierung # entfernen.

  3. Ersetzen Sie alle Fälle von AllowOverride None durch AllowOverride All.

  4. Vergessen Sie nicht, den Apache-Server neu zu starten. :)

1
Patriotic

Ich hatte die WordPress-Installation von einem Unterverzeichnis in ein anderes verschoben, daher lag das Problem in meinem Fall an der WordPress-Konfiguration in den .htaccess-Dateien. Es wurde versucht, jede Seite außer der Startseite in das alte Verzeichnis umzuleiten. Es war nur eine Frage der Aktualisierung von olddir auf newdir... Dies hat mich mehr als einmal ausgelöst, also dachte ich, ich würde es hier stellen ...

# 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