Wp-json/Return 404,但wp-json/wp/v2/在我的nginx服务器上运行良好

时间:2017-01-24 作者:hcheung

当我访问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}}`
但是,如果我使用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相关的案例。你知道这是什么原因吗?怎么解决?

Update

如果我跑步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}}

Latest Update (7 Mar 2017)

随着WordPress 4.7.3的发布,这个bug已经被修复。解决方法unset ($_SERVER[\'PATH_INFO\']); 不再需要。

4 个回复
最合适的回答,由SO网友:lkraav 整理而成

这可能是关于https://core.trac.wordpress.org/ticket/39432

症状看起来非常相似,在撰写本文时,尚未发布为4.7.3。手动应用补丁修复了我的nginx设置上的问题。

SO网友:user113522

只是在仅限nginx(无Apache)的WordPress blank安装4.7.2站点上遇到了相同的问题。

基地/wp-json/ &;index.php?rest_route=/ URL显示rest_no_route 404, 但是所有的/wp-json/wp/v2/ 工作正常。

这个问题原来与PATH_INFO WordPress core试图构建错误URL的nginx传递的变量,如果它设置为任何值,甚至是空字符串。

需要更多的调查,但我能够通过在这些特定页面上添加一个条件来修复REQUEST_URI 通过为他们这样做:

unset($_SERVER[\'PATH_INFO\']);

SO网友:Mathis Schülingkamp

对我来说,将永久链接更新到比第一个选项更特殊的内容就可以了。

SO网友:Arun Panneerselvam

wordpress建议的nginx设置对我很有用。将此添加到您的nginx。形态

location /wp-json/ { # Resolves WP Gutenberg 404 issue
  try_files $uri $uri/ /index.php;
} 
并将“Permalinks”设置更改为“Post name”

这应该与/wp-json 问题https://wordpress.org/support/article/nginx/

我用给出的说明配置了一个网络站点,一切似乎都很好。值得一试!

此外,https站点必须有正确的永久链接,只需检查一下就可以了!

相关推荐

已下载WP,但Nginx主页仍显示

我正在尝试在运行Nginx的Ubuntu 16服务器上安装第二个WP站点。根据我的服务器结果,我已经成功安装了WordPress,但我仍然只得到了Nginx主页。我想这可能是因为组所有者是用户,所以我将web文件上的组所有者更改为www数据:microurb@vps148370:/var/www/dancortes.press/public_html$ ls -l total 192 -rw-r--r-- 1 microurb www-data 0 Oct 5 15:36 in