it-swarm.com.de

wp-json/return 404, aber wp-json/wp/v2/funktioniert gut auf meinem Nginx-Server

Wenn ich als www.example.com/wp-json/ auf meine WordPress-Site zugreife, wird dieser 404-Fehler angezeigt.

`{"code":"rest_no_route","message":"No route was found matching the URL and request method","data":{"status":404}}`

Aber die API REST gibt das richtige JSON-Objekt zurück, wenn ich die URL von www.example.com/wp-json/wp/v2/ verwende.

Mein Permalink ist als /%year%/%monthnum%/%postname%/ eingerichtet und hier ist ein Teil meiner Nginx-Konfigurationseinstellungen:

server {

    root /var/www/html;
    index index.php index.html index.htm;

    location / {
      try_files $uri $uri/ /index.php$is_args$args;
    }

    # other location directives related to php, cache, etc.

}

Ich habe im Internet gesucht und die meisten Probleme scheinen durch falsche Permalink-Einstellungen und .htaccess (Apache) verursacht zu sein, aber nur selten über den Fall im Zusammenhang mit Nginx erwähnt. Irgendeine Idee woran das liegt und wie man es löst?

Update

Wenn ich curl -i www.example.com/wp-json ausführe, bekomme ich Folgendes:

HTTP/1.1 404 Not Found
Server: nginx
Date: Sun, 29 Jan 2017 11:58:21 GMT
Content-Type: application/json; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Vary: Accept-Encoding
X-Robots-Tag: noindex
Link: <https://example.com/wp-json/>; rel="https://api.w.org/"
X-Content-Type-Options: nosniff
Access-Control-Expose-Headers: X-WP-Total, X-WP-TotalPages
Access-Control-Allow-Headers: Authorization, Content-Type

{"code":"rest_no_route","message":"No route was found matching the URL and request method","data":{"status":404}}

Letztes Update (7. März 2017)

Mit der Veröffentlichung von WordPress 4.7.3 wurde dieser Fehler behoben. Die Problemumgehung unset ($_SERVER['PATH_INFO']); wird nicht mehr benötigt.

2
hcheung

Könnte es sich um https://core.trac.wordpress.org/ticket/39432 handeln?

Die Symptome sehen sehr ähnlich aus und wurden zum Zeitpunkt des Schreibens noch nicht als 4.7.3 veröffentlicht. Das manuelle Anwenden des Patches behebt das Problem in meinem Nginx-Setup.

2
lkraav

Nur lief in das gleiche Problem auf einer Nginx-Site nur (kein Apache) WordPress leer installieren 4.7.2.

Die Basis-URLs für /wp-json/ & index.php?rest_route=/, die rest_no_route 404 anzeigen, aber der gesamte /wp-json/wp/v2/ funktioniert einwandfrei.

Es stellte sich heraus, dass das Problem mit der von nginx übergebenen PATH_INFO -Variable zusammenhängt, aus der der WordPress-Kern versucht, die URL falsch aufzubauen, wenn sie auf irgendetwas festgelegt ist, sogar auf eine leere Zeichenfolge.

Es bedarf weiterer Nachforschungen, aber ich konnte dieses Problem beheben, indem ich über REQUEST_URI eine Bedingung für diese bestimmten Seiten hinzufügte:

unset($_SERVER['PATH_INFO']);
1
user113522

Für mich war die Aktualisierung der Permalinks etwas Besonderes als die erste Option.