如何在 .htaccess 文件中为 IE 9 设置 HTTP 头信息

3

我无法找到一种方法,在只有IE9浏览器的情况下在.htaccess文件中设置某些头信息。 我的要求的伪代码如下:

if (IE 9) {
    header set (value)  
} else {
    header set (value)
}

请建议我如何在我的 .htaccess 文件中实现这个功能。

你能举一个你想要发送到IE9的头部及其“else”值的例子吗? - Tarek Fadel
对于IE9,我想设置header("X-UA-Compatible: IE=EmulateIE8"),而对于其他浏览器则设置header("X-UA-Compatible: IE=Edge"); - Rahul
如果您的服务器提供PHP/ASP等页面,为什么不使用<meta http-equiv="">标签呢?并根据用户代理设置其content为所需内容? - Tarek Fadel
是的,可以使用IE 9的条件注释来实现这一点,但如果我将meta标签放在条件注释内部,则IE9会忽略它。 - Rahul
2个回答

8

在阅读了一堆Apache文档后,我找到了解决方案 :)。只需在htaccess文件中包含以下几行代码即可,对我来说很有效。

BrowserMatch "MSIE 9.0"  ie9
header set X-UA-Compatible "IE=EmulateIE8" env=ie9

0
根据这篇文章<meta http-equiv="X-UA-Compatible" content="IE=8" />应该可以让你在使用任何版本的IE时都得到所需的结果。

是的,它将实现我想要的相同效果,但这个元标记我需要包含在我的模板(例如HTML)中,而我想避免这样做。正如我之前提到的那样,IE9的条件状态会忽略这个元标记,而不使用IE的条件注释将针对所有IE版本执行。所以我想通过htaccess检测IE9并设置头文件。 - Rahul
那个<meta>标签告诉浏览器要假装指定的头部是服务器发送的。如果IE9忽略它,那么无论你从哪里发送它,它仍然会被忽略。 - Tarek Fadel
只有当我把这个元标签放在条件注释中时,它才会被忽略。很奇怪,但是IE 9的行为也是一样的,似乎是IE 9的问题。谢谢。 - Rahul

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接