.htaccess文件Wordpress rewriterrule块重新排列到顶部



我有问题(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_AUTHORIZATIONenv var(用于帮助HTTP身份验证)将只在通过WordPress路由的请求上设置(包括主页)。并且(在Apache*1)当请求被重写到WordPress前端控制器(index.php)时,REDIRECT_HTTP_AUTHORIZATIONenv var将生成。主页以外的页面请求。虽然我很确定WordPress不会利用这一点。HTTP_AUTHORIZATIONenv变量将不会像以前那样在请求静态资源(图像,CSS, JS等)时设置。

两个独立的指令

对于这两个独立的指令,就像在原始代码中一样,HTTP_AUTHORIZATIONenv var在每个请求上都被设置,包括对静态资源的请求。(但通常来说,这是多余的。)并且(在Apache*1)当请求被重写到WordPress前端控制器(index.php)时,将生成REDIRECT_HTTP_AUTHORIZATIONenv变量。首页以外的页面请求。

(*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变量),应该全部删除!

最新更新