我的服务器中安装了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?但这之前就有效......所以我现在更加困惑了。
答案 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