使用mod_rewrite更改HTTP_USER_AGENT

时间:2014-09-28 15:50:58

标签: apache mod-rewrite

我们有一位客户以某种方式更改了Windows注册表,MSIE始终显示“MSIE 7.0b”,尽管安装了更新的版本。

我们的Web应用程序至少需要MSIE 8.因此我尝试使用mod_rewrite来更改HTTP_USER_AGENT的值:

RewriteEngine On
RewriteCond expr "%{HTTP_USER_AGENT} -strmatch 'MSIE 7.0b'"
RewriteRule .* - [L,E=HTTP_USER_AGENT:'MSIE 8']
#RewriteRule .* [L,E=HTTP_USER_AGENT:'MSIE 8']
#RewriteRule .* [L,E=HTTP_USER_AGENT::'MSIE 8']



* The apache2 configtest failed.
Output of config test was:
AH00526: Syntax error on line 2 of /etc/apache2/conf-enabled/rewrite.conf:
RewriteRule: bad flag delimiters
Action 'configtest' failed.

正如您所看到的,我已经测试了RewriteRule的不同版本,但我总是得到相同的错误。 那么,更改HTTP_USER_AGENT设置的RewriteRule的正确构造是什么?

感谢任何提示,

的Stefan

一些进展:将RewriteRules更改为

RewriteRule .* - [E=HTTP_USER_AGENT:"MSIE\ 8"]
#RewriteRule .* - [E=User-Agent:"MSIE\ 8"]

删除错误消息,但不会更改MSIE的版本。我也试过

BrowserMatch "MSIE 7\.0b" User-Agent="MSIE 8.0"
SetEnvIf User-Agent "MSIE 7\.0b" User-Agent="MSIE 8.0"

但也没有成功。是否可以改变这个变量?

的Stefan

1 个答案:

答案 0 :(得分:0)

在mod_rewrite中使用E = ...更改环境变量而不是http标头。如果要更改http标头,则需要使用mod_headers。这是文档:

http://httpd.apache.org/docs/2.2/mod/mod_headers.html