wp-json / return 404, но wp-json / wp / v2 / отлично работает на моем сервере nginx

Когда я обращаюсь к своему сайту WordPress как www.example.com/wp-json/ я получил эту ошибку 404.

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

Но REST api возвращает правильный объект json, если я использую URL-адрес www.example.com/wp-json/wp/v2/ .

Моя постоянная ссылка настроена как /%year%/%monthnum%/%postname%/ , и вот часть моих настроек конфигурации nginx:

 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. } 

Я искал в Интернете, и большинство проблем, похоже, вызвано неправильной настройкой постоянной ссылки и .htaccess (Apache), но редко упоминается о случае, связанном с nginx. Любая идея, почему это и как ее решить?

Обновить

Если я запустил curl -i www.example.com/wp-json , это то, что я получаю:

 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}} 

Последнее обновление (7 марта 2017 г.)

С выпуском WordPress 4.7.3 эта ошибка исправлена. Обходной путь не unset ($_SERVER['PATH_INFO']); больше не нужен.

Solutions Collecting From Web of "wp-json / return 404, но wp-json / wp / v2 / отлично работает на моем сервере nginx"

Это может быть примерно https://core.trac.wordpress.org/ticket/39432

Симптомы выглядят очень похожими и на момент написания не были выпущены как 4.7.3. Применение исправления вручную исправило проблему в моей настройке nginx.

Просто столкнулся с той же проблемой только на nginx (без Apache). WordPress просто установил сайт 4.7.2.

База /wp-json/ & index.php?rest_route=/ URL, показывающая rest_no_route 404 , но все /wp-json/wp/v2/ работают нормально.

Эта проблема оказалась связанной с переменной PATH_INFO переданной nginx, что ядро ​​WordPress пытается неправильно создать URL-адрес, если он настроен на что угодно, даже пустую строку.

Нужно больше исследовать, но я смог исправить, добавив условие на эти конкретные страницы через REQUEST_URI , сделав это для них:

 unset($_SERVER['PATH_INFO']); 

Для меня обновление задания всегда было чем-то особенным, чем первый вариант.