1

PHP 重定向应该适用于 IE 8 及以下版本。版本 9 运行良好,但 IE 10.0 无法使用此代码(看起来 IE 10.0 被解雇等):

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");
}

尾随点确保版本号只有一位。

4

3 回答 3

3

我认为更可靠的 IE 重定向方法是使用条件 HTML 语句通过 javascript 进行重定向:

<!--[if lte IE8]>
<script>
    window.location.assign('http://www.XYXYXYX.com')
</script>
<![endif]-->
于 2013-08-16T09:30:30.403 回答
1

确保检查完整版本号。

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”)中的一个数字。

于 2013-08-16T09:39:12.060 回答
-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

}
于 2013-08-16T09:32:46.410 回答