Wordpress rest API返回404?

时间:2018-04-16 13:46:59

标签: wordpress permalinks wordpress-rest-api

我的服务器中安装了WP,它使用WP作为API。我使用一些插件来获取我的数据:

我的主题是使用WP rest API获取信息的反应应用。

这很好用。我安装了WP,插件和事情进展顺利。

周五我通过FTP做了一些事情并意外删除了.htaccess文件的内容(不是文件本身)。虽然这个文件是空的,但我更新了永久链接的结构。我注意到我打破了博客的首页(管理员工作正常)并恢复了htaccess并启用了我之前认为已启用的永久链接设置(全新安装,我认为这是默认启用的“月份和名称”设置)。 / p>

出于某种原因,当启用永久链接时,API网址现在返回404。

如果我在固定链接上使用“普通”设置,那么事情几乎可以正常工作(首页插件已损坏,但这是我认为的另一个故事)。

任何人都知道可能出现的问题或我如何修复它?这是现场网站的链接:http://enrique-ramirez.com/dk/它可能会启用Plain设置。

这是我当前的.htaccess文件:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

更新因此,如果我尝试获取此链接:/wp-json/wp/v2/posts它将失败,但如果我追加index.php则会有效(因此/index.php/wp-json/wp/v2/posts。请注意我没有使用URL params)。 I read somewhere我可能需要在我的apache中启用mod_rewrite?但这之前就有效......所以我现在更加困惑了。

2 个答案:

答案 0 :(得分:0)

我遇到了完全相同的问题,这表明未启用重写。但是,我的服务器启用了重写模块,并且具有与上述相同的.htaccess文件。

问题是/etc/apache2/apache2.conf不允许.htaccess覆盖文件:

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

AllowOverride None更改为AllowOverride All解决了该问题。确保您将WP网站定位在正确的Directory上!

然后重新启动apache进程:

sudo service apache2 restart

注意:如果您已将其余API端点配置为默认wp-json之外的其他端点,则可能需要转到“仪表板->设置”并更改永久链接设置,然后将其还原为它是。这将重建重写缓存。

答案 1 :(得分:0)

对于Nginx服务器, 打开/etc/nginx/sites-available/example.com

将“位置/”部分更改为

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

location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
}

然后重新启动Nginx服务器:

service nginx restart