.htaccess 此HTTP授权重写规则的作用是什么?

.htaccess 此HTTP授权重写规则的作用是什么?,.htaccess,mod-rewrite,url-rewriting,apache2,googlebot,.htaccess,Mod Rewrite,Url Rewriting,Apache2,Googlebot,我在我的网站上有一个重写递归错误,是谷歌机器人造成的,但是我找不到导致它的url,因为我的日志级别很低。我提出了,但到目前为止还没有发生 RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] 所有重写规则在我看来都很好,都有[L]标志,除了这个 我不太明白。它来自开源商店系统Magento 据我所知,它除了设置环境变量E之外什么都不做。但这不是一种非常愚蠢的方法吗?如果这是目标,您不应该使用SetEnv吗?此行将环境变量设置

我在我的网站上有一个重写递归错误,是谷歌机器人造成的,但是我找不到导致它的url,因为我的日志级别很低。我提出了,但到目前为止还没有发生

RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
所有重写规则在我看来都很好,都有[L]标志,除了这个

我不太明白。它来自开源商店系统Magento


据我所知,它除了设置环境变量E之外什么都不做。但这不是一种非常愚蠢的方法吗?如果这是目标,您不应该使用SetEnv吗?

此行将环境变量设置为用户身份验证字符串的值-本质上是设置变量而不是常量值。据我所知,SetEnv和setenif只允许您将环境变量设置为预定常数

设置的变量实际上是HTTP_授权,而不是E。我想这是用户身份验证过程的一部分。

对此有一个很好的答案。我引述:

看起来您的主机像您的本地主机一样,以fcgi的形式运行php,而不是php5_模块。(phpinfo-服务器API:CGI/FastCGI)

关键是php5_模块会自动处理HTTP_授权头,但fcgi_模块不会

解决方案很简单-将此行添加到托管服务器上的.htacces:

重写规则。*-[E=HTTP\U授权:%{HTTP:AUTHORIZATION},L]


如果有其他重写规则,它对我很有效。

如果你想,可以使用
setenif
。事实上,如果在使用mod_rewrite的子目录中有.htaccess文件,这可能更可取(因为您可能会覆盖您的身份验证!)。例如,
setenif授权+HTTP\u授权=$0