【问题标题】:404 on http://localhost/wp-json/wp/v2/posts in wordpress using REST API V2使用 REST API V2 在 wordpress 中的 http://localhost/wp-json/wp/v2/posts 上的 404
【发布时间】:2017-11-28 17:43:34
【问题描述】:

我在http://localhost/wp-json/wp/v2/posts 路线上收到 404。我将永久链接类型更改为普通链接。仍然遇到同样的问题。

如果它有用,我是 ubuntu 16.04 桌面最近从 15.10 升级,遇到了 php5.6 到 7.0 升级的问题。我现在在 php 7.0

编辑1: 尝试了所有其他永久链接设置组合,没有结果!

【问题讨论】:

  • 根据文档,当您转到 http://localhost/wp-json/ 时,哪些端点可用?什么版本的wordpress?使用插件或内置版本的wp-json?当然这里没有提供太多细节
  • 我用的是4.8,我猜wp-json是内置在这个版本中的。但是我安装了 REST API v2 插件(正在学习一些教程,可能是旧的)。
  • 仅供参考,我是 wordpress 的新手,所以也向我索要愚蠢的支票!

标签: angularjs wordpress rest routes wordpress-rest-api


【解决方案1】:

http://localhost/?rest_route=/wp/v2/posts 应该有效。 详情请参考https://developer.wordpress.org/rest-api/using-the-rest-api/discovery/

【讨论】:

  • 网络服务器是否应该将wp-json/* 重定向到index.php?rest_route=* 我在尝试保存新帖子时收到错误消息。
【解决方案2】:

您需要授予 wp-content 文件夹的权限。如需更改权限,请在终端中使用以下命令。

sudo chmod -R 755 wp-content/

更改权限后仍然显示404错误然后允许AllowOverride for apache,以下是步骤:

导航到/etc/apache2/sites-enabled并打开000-default

所有AllowOverride 变量都设置为None,我将其替换为All

在此更改后使用以下命令启用 mod:

 a2enmod rewrite

下面是重启apache服务的命令:

sudo service apache2 restart

【讨论】:

  • /etc/apache2/sites-enabled/000-default 中根本没有 AllowOverride 变量
  • 您需要允许读取 htaccess 到 apache。更多详情请点击链接:digitalocean.com/community/tutorials/…
  • 执行上述步骤后,您需要从仪表板更改永久链接,请设置永久链接为发布。
  • 我很抱歉这么说,但是不要这样做! 这是一个非常糟糕和危险的答案,不应该被接受。使用sudo-R,您正在对整个目录执行递归操作,这不仅无用而且可能存在危险。 wp-contents 不应该有777权限,755就足够了。见wordpress.org/support/article/changing-file-permissions
  • 感谢您的建议。我已经修改了我的帖子。谢谢
【解决方案3】:

在您的根链接后添加index.php

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

这对我有用。

【讨论】:

【解决方案4】:

首先您需要使用以下命令启用 apache rewrite 模块:

 sudo a2enmod rewrite

那么我们必须编辑虚拟主机的配置文件

sudo nano /etc/apache2/sites-available/your_config.conf

并添加以下指令

<Directory /var/www/your_root_directory>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
</Directory>

注意:更改目录路径

现在我们的文件应该是这样的

<VirtualHost *:80>
    <Directory /var/www/your_root_directory>

        . . .

    </Directory>
    ServerName midomain.com
    . . .
</VirtualHost>

现在重启apache的服务

sudo service apache2 restart

在您网站的根目录中创建一个 .htacces 文件

sudo nano /var/www/your_root_directory/.htaccess

最后添加到 .htaccess 中

RewriteEngine on
RewriteRule ^wp-json/wp/v2/posts$ ?rest_route=/wp/v2/posts [NC]

【讨论】:

    猜你喜欢
    • 2018-01-09
    • 1970-01-01
    • 1970-01-01
    • 2018-01-29
    • 1970-01-01
    • 1970-01-01
    • 2019-06-16
    • 2021-09-24
    • 1970-01-01
    相关资源
    最近更新 更多