我的网站上有一个重写递归错误,谷歌博特造成了,但我找不到导致它的网址,因为我的Loglevel很低。我提出了它,但到目前为止还没有再发生过。
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
所有Rewriterules对我来说都很好,除了这个之外还有[L]标志。
我不太明白。它来自开源商店系统Magento。
据我所知,它只会设置环境变量E.但这不是一种非常愚蠢的方法吗?如果这是目标,你不应该使用SetEnv吗?
答案 0 :(得分:18)
Symfony developers Group有一个很好的答案。我引用:
看起来你的托管正在运行php作为fcgi而不是php5_module,就像你的localhost一样。 (phpinfo - 服务器API:CGI / FastCGI)
关键是php5_module自动处理HTTP_AUTHORIZATION标头,但fcgi_module没有。
解决方案很简单 - 将此行添加到托管服务器上的.htacces:
RewriteRule。* - [E = HTTP_AUTHORIZATION:%{HTTP:授权},L]
它对我有用
答案 1 :(得分:7)
此行将环境变量设置为用户身份验证字符串的值 - 实质上是设置变量而不是常量值。据我所知,SetEnv和SetEnvIf只允许您将环境变量设置为预定的常量。
设置的变量实际上是HTTP_AUTHORIZATION,而不是E.我猜这是用户身份验证过程的一部分。