我有问题(401错误)试图通过rest API到达我的网站。我将。htaccess文件中的Wordpress块移到了顶部,现在我的网站可以访问了。这是。htaccess文件中的第一个块?
# BEGIN WordPress
<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]
我需要像这样组合RewriteRule的两行吗?它在功能上有什么改变吗?
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
在我做任何更改之前,.htaccess文件中的第一个块是:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
通过移动"Wordpress block"它只添加了一行RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
我需要合并这两行吗
你当然不需要"将这两行合并。
如果你这样做了,那么访问你的rest API可能没有什么不同。
一个单独的组合指令
通过组合这两个指令,就像你所做的那样,将意味着HTTP_AUTHORIZATION
env var(用于帮助HTTP身份验证)将只在通过WordPress路由的请求上设置(包括主页)。并且(在Apache*1)当请求被重写到WordPress前端控制器(index.php
)时,REDIRECT_HTTP_AUTHORIZATION
env var将不生成。主页以外的页面请求。虽然我很确定WordPress不会利用这一点。HTTP_AUTHORIZATION
env变量将不会像以前那样在请求静态资源(图像,CSS, JS等)时设置。
两个独立的指令
对于这两个独立的指令,就像在原始代码中一样,HTTP_AUTHORIZATION
env var在每个请求上都被设置,包括对静态资源的请求。(但通常来说,这是多余的。)并且(在Apache*1)当请求被重写到WordPress前端控制器(index.php
)时,将生成REDIRECT_HTTP_AUTHORIZATION
env变量。首页以外的页面请求。
(*1与LiteSpeed相反,在LiteSpeed中,不会生成形式为REDIRECT_...
的env变量。)
我将
.htaccess
文件中的Wordpress块移到了顶部,现在我的网站可以访问了。
那样做不一定是正确的。通常,WordPress代码块(前端控制器)应该出现在文件的后面。可能只是有一个相互冲突的规则应该被"修改"。或者可能移动到之后的WordPress代码块。但是将这些指令移到WordPress代码块之后可能会有效地"禁用"。
更新:
在我移动"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>
那个代码块只是一个错误的"copy"的WordPress代码块(不包括HTTP_AUTHORIZATION
变量),应该全部删除!