2014-09-18 34 views
0

我有一個網站,我想重定向用戶使用小於8的IE版本。 我爲IE 7創建了幾種正則表達式的變體,但每次,重定向也影響IE 11.阿帕奇重寫適用於IE 7,但也影響更新的IE版本

我不希望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 

要添加到問題,該網站是一個內部網站,和目標用戶的瀏覽器在兼容性模式爲內聯網站點。 我需要能夠覆蓋兼容模式,所以我說這對我的.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用戶需要查看非重定向網站。

任何想法?

回答

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 +,並且因爲IE8/9「比較小的」規則的忽略。元規則只是對目標URL執行直接重定向(0秒延遲)。

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

+0

謝謝,我期待已嘗試過這種方法,但兼容模式是導致IE 11模擬到一個較低的版本。 您的方法結合返回標題工作。 'Header set X-UA-Compatible「IE = edge,chrome = 1」' – luskbo 2014-09-19 01:57:26