首页 文章

Wordpress REST API(wp-api)404错误

提问于
浏览
16

几个月来,我一直在使用Wordpress REST插件WP-API,同时使用XAMPP进行本地开发 . 我最近将我的站点迁移到EC2实例,一切正常 except 每当我尝试访问API上的任何 endpoints 时,我现在得到一条带有以下消息的404:

在此服务器上找不到请求的URL / wordpress / wp-json /

Pretty permalinks are enabled 具有以下结构 http://.../wordpress/sample-post/ ,在导航到浏览器中的特定帖子时可以正常工作 .

以下是有关我的设置的一些细节:

  • Wordpress 4.4.1

  • Not a Multisite

  • WP REST API插件2.0-beta9

  • Apache 2.2.22

  • Ubuntu 12.04.5

任何帮助将不胜感激,因为我已经经历了几个小时的SO和WP支持论坛并且没有想法 . 谢谢!

6 回答

  • 51

    在WPEngine和WP 4.9.2上,我只需更新永久链接即可获得新安装的新站点以返回v2 API调用 . 我做了什么:

  • 11

    I had to manually make a .htaccess, set it to chmod 664, and copy the permalink rules into it.

    我也玩过

    • 设置>永久链接

    • 点击"Save"后,通过永久链接页面底部的代码手动更新.htaccess

    • 添加"index.php"作为其他答案之一表明

    • 确保 mod rewrite 已通过 a2enmod 启用

  • 11

    我最新的WordPress 4.7遇到了这个问题 . 在我的情况下,REST API仅在我将永久链接设置更改为“Plain”以外的其他设置后才起作用,这是我的安装的默认设置 .

  • 0

    我已经将WordPress安装从子目录移动到另一个子目录,所以在我的情况下问题是由于 .htaccess 文件中的WordPress配置 . 它试图将每个页面重定向到主目录 . 这只是一个将 olddir 更新为 newdir 的问题......这让我不止一次绊倒,所以我想我会把它放在这里......

    # 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

    UPDATED NEW WAY

    我在本地项目中也遇到过类似的问题 . I used index.php after my project url 并且它奏效了 .

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

    If it displays a 404 error then update permalinks first (见"Paged Navigation Doesn't Work"部分

    如果它有效,也许你需要在ubuntu上启用 mod_rewrite

    a2enmod rewrite
    sudo service apache2 restart
    

    安装

    REST API包含在WordPress 4.7中!不再需要插件,只需安装最新版本的WordPress即可开始使用 .

    如果你在4.7之前:

    用法

    获取所有帖子:

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

    对于搜索功能,搜索测试帖子如下所示:

    /wp-json/wp/v2/posts?filter[s]=test
    
  • 14

    结果证明Apache配置存在问题 .

    首先,我删除了根wordpress目录中的 .htaccess 文件 .

    接下来,我导航到 /etc/apache2/sites-enabled 并打开 000-default

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

    这就是诀窍!

相关问题