我发现 Wordpress 的新版本(V5.9)在 .htaccess 中添加了这一行:
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
旧版本的 Wordpress 没有这一行。这是什么意思?我可以删除它吗?
我发现 Wordpress 的新版本(V5.9)在 .htaccess 中添加了这一行:
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
旧版本的 Wordpress 没有这一行。这是什么意思?我可以删除它吗?
如果您没有在 WordPress 中使用 HTTP 身份验证,则可以将其删除。
如果您使用 PHP 作为 Apache 模块,则可以将其删除。(也许 WP 在生成
.htaccess
文件时会检测到这一点?)旁白:但是,由于此指令位于 WordPress 代码块内(即在
# BEGIN WordPress
/# END WordPress
注释标记之间),因此如果您删除它,那么 WordPress 只会“尝试”并稍后再放回去。(出于这个原因,您应该避免手动编辑 WP 代码块。)有这个指令
.htaccess
不会导致任何问题。当 PHP 作为 CGI 安装时,Apache 会阻止
Authorization
HTTP 请求标头(与 HTTP 身份验证一起使用)传递给 CGI 脚本(即本例中的 PHP)。这是一项“安全功能”,可防止将用户的凭据传递给所有 CGI 脚本(如果您不控制服务器,这些脚本可能不受信任)。PHP 通常
$_SERVER['HTTP_AUTHORIZATION']
从 HTTP Authorization 标头设置超全局(和关联的数组元素),但如果它已被 Apache 剥离,则它不能。该
RewriteRule
指令.htaccess
试图通过将HTTP_AUTHORIZATION
环境变量设置为Authorization
HTTP 请求标头的值来“修复”此问题(这是在将请求传递给 PHP 之前)。然后 PHP 将HTTP_AUTHORIZATION
env var 分配给$_SERVER
超全局数组。所以,理论上,它在做同样的事情。但是,根据服务器配置,这不一定有效。或者,要明确允许“将 HTTP 授权标头作为 CGI 变量传递给脚本”,您可以设置
CGIPassAuth On
(Apache 2.4.13+).htaccess
,这应该允许 PHP 看到Authorization
标头。但是,根据服务器配置,这也可能不起作用。参考: