2013-08-16 19 views
1

PHP重定向應該適用於IE 8及更低版本。版本9工作正常,但IE瀏覽器10.0是不是跟這個代碼的工作(看起來像IE 10.0被駁回等或):用於IE 10.0的PHP UserAgent不匹配

if (preg_match("/(?i)msie [1-8]/",$_SERVER['HTTP_USER_AGENT'])) { 
    header("Location: http://www.XYXYXYX.com"); 
    } 

我的目標是,使轉向應該只能用於MS IE 8及以下。

非常感謝。


EDIT2 /解決方案:

我應該改變我的代碼如下:

if (preg_match("/(?i)msie [1-8]\./",$_SERVER['HTTP_USER_AGENT'])) { 
header("Location: http://www.XYXYXYX.com"); 
} 

中的後點,確保版本號是唯一的一個數字。

+0

IE10有一個[新用戶代理](http://blogs.msdn.com/b/ie/archive/2011/04/15/the-ie10-user-agent-string.aspx) – glautrou

+0

它並不完美。一旦IE 20獲得釋放,同樣的問題將在那裏。 – Sven

+2

除了MSIE 10是一個顯而易見的問題之外,您爲什麼首先使用這個正則表達式呢?你真的用IE 2或3或4測試了你的回退站點嗎?發現它有效嗎?如果沒有,爲什麼你打擾重定向這些瀏覽器(假設任何人正在使用它們)? – Jon

回答

1

請務必檢查的FULL版本號。

if (preg_match("/(?i)msie [1-8]\.0/",$_SERVER['HTTP_USER_AGENT'])) { 
    header("Location: http://www.XYXYXYX.com"); 
} 

請注意獲得檢查的「.0」後綴。這樣,您將永遠不需要再次更改10,20,30甚至80個版本的代碼。

嗯,好,IE 5.5是一旦釋放...

if (preg_match("/(?i)msie [1-8]\./",$_SERVER['HTTP_USER_AGENT'])) { 
    header("Location: http://www.XYXYXYX.com"); 
} 

檢查ONE個位數之後,有一個點。如果它不是一個點,它可能是一個兩位數字的數字,如「10」。

3

我認爲IE重定向的更可靠的方法是使用條件HTML語句通過JavaScript來做到這一點:

<!--[if lte IE8]> 
<script> 
    window.location.assign('http://www.XYXYXYX.com') 
</script> 
<![endif]--> 
+0

那是真的 - 但我也檢查特殊字符的URL字符串 - 所以PHP對我來說是最好的選擇 – Mike

+0

檢查URL和瀏覽器是兩個不同的東西。我沒有看到任何理由不使用條件HTML **和** PHP ... – zessx

-1
preg_match('/(?i)msie (6|7|8|9|10)/',$_SERVER['HTTP_USER_AGENT']) 

if(preg_match('/(?i)msie [1-9]/',$_SERVER['HTTP_USER_AGENT'])) 
{ 
    // if IE <= 10 
    echo "version is less than 10"; //rest of your code 
} else if(preg_match('/(?i)msie [10]/',$_SERVER['HTTP_USER_AGENT'])) 
{ 
    // if IE = 10 
    echo "version is IE 10"; //rest of your code 
} 
else 
{ 
    // if not 10 
    echo " other browser"; //rest of your code 

}