我有一个wordpress:https://example.com 我需要使用WP REST API。
在.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]
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]
</IfModule>
# END WordPress
我在wordpress上使用了基本Auth插件:https://github.com/WP-API/Basic-Auth
尽管如此,我有:
{
"code": "rest_cannot_access",
"message": "Only authenticated users can access the REST API.",
"data": {
"status": 401
}
}
我使用http和https进行了测试。
怎么了?
答案 0 :(得分:2)
解决!
我将其更改为以下
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
HTTP_AUTHORIZATION规则必须先于其他规则,这是因为L标志存在,L标志意味着(最后 - 停止处理规则),因此如果它在原始之后它永远不会达到该规则wordpress规则,
答案 1 :(得分:0)
我遇到了同样的问题,并通过验证是否还有其他密码保护插件来解决它。我正在使用名为Password Protected
的插件,并禁用它来生成身份验证令牌。