Apache Rewrite适用于IE 7,但也会影响较新的IE版本

时间:2014-09-18 23:01:34

标签: regex apache internet-explorer

我有一个网站,我想使用小于8的IE版本重定向用户。 我为IE 7创建了几种正则表达式,但每次重定向都会影响IE 11。

我不想要IE> 7个用户受影响。

以下是我的Apache重写:

RewriteCond %{HTTP_USER_AGENT} .*MSIE.7.*
RewriteRule ^index.php subindex.php 
RewriteCond %{HTTP_USER_AGENT} .*MSIE.6.*
RewriteRule ^index.php subindex.php 
RewriteCond %{HTTP_USER_AGENT} .*MSIE.5.*
RewriteRule ^index.php subindex.php 

我也试过这个:

RewriteCond %{HTTP_USER_AGENT} "MSIE [5-7]" [NC]
RewriteRule ^index.php subindex.php 

要添加问题,该站点是Intranet站点,目标用户浏览器处于Intranet站点的兼容模式。 我需要能够覆盖兼容模式,所以我将其添加到我的.htaccess:

Header set X-UA-Compatible "IE=edge,chrome=1"

并尝试了这个:

Header set X-UA-Compatible "IE=8,chrome=1"

只是为了踢,我也用8和9和10替换了边缘,看它是否有所作为。 没变。 IE 7打破了我的网站,所以我需要重定向这些用户,但在兼容模式下较新的IE用户需要看到非重定向网站。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

User agent sniffing is evil,并浪费了服务器资源,这些资源最好在其他地方使用。让浏览器自己选择:

<!--[if lt IE 8]>
    <meta http-equiv="refresh" content="0; url=http://mysite.tld/subindex.php">
<![endif]-->

conditional comments屏蔽来自任何非IE浏览器和IE10 +的这行代码,并且由于小于&#39;而被忽略。 IE8 / 9规则。元规则只对目标URL执行直接重定向(0秒延迟)。

Some bonus reading on why user agent sniffing is just... no.