使用.htaccess重定向IE浏览器(远离xhtml)

时间:2010-10-29 18:17:36

标签: internet-explorer .htaccess xhtml redirect

正如标题所示,我希望使用 xhtml 作为我的主页,我想将使用Internet Explorer浏览器的访问者重定向到另一个页面(.htm with更少的内容说“你正在使用IE,强硬的tittie。”。)。

由于IE自动下载app / xhtml文件,我无法使用javascript和whatnot这样做,所以我认为唯一的选择是使用.htaccess。但是经过近两个小时的谷歌搜索htaccess示例来自类似的帖子,我仍然无法让它工作,我在IE和Chrome / firerfox中得到403或500 ..

这是我上次尝试的内容:

<IfModule mod_rewrite.c>
Options +FollowSymLinks 
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_USER_AGENT} "MSIE 5" [OR]
RewriteCond %{HTTP_USER_AGENT} "MSIE 6" [OR]
RewriteCond %{HTTP_USER_AGENT} "MSIE 7" [OR]
RewriteCond %{HTTP_USER_AGENT} "MSIE 8"
RewriteRule ^(.*)$ http://www.mypage/index.IE.htm
</IfModule>

无论如何,为了使这个更清楚,我希望我的.htaccess能够做到这一点:

if(whoever_accesses_my_page is anyVersionOf_IE)
     set_index("http://www.mypage/index.IE.htm");
else
     set_index("http://www.mypage/index.xhtml");

1 个答案:

答案 0 :(得分:1)

经过很多的打击和错过(可能是因为我不知道.htaccess)我已经弄清楚了:

RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} .*MSIE.*
RedirectMatch ^/$ index.IE.htm
DirectoryIndex index.xhtml

当有人访问“http://www.yoursite.com/optionalFolder/”时,上述代码段会生效。如果访问者是版本4的任何形式的Internet Explorer,它将从那里重定向到index.IE.htm,否则(如果你不是IE)转到index.xhtml。


我还找到了一个巧妙的技巧,让Internet Explorer实际读取与文本/ HTML相同的.xhtml,因此您不必维护同一站点的2个单独版本:

RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} .*MSIE.*
RewriteCond %{REQUEST_URI} \.xhtml$
RewriteRule .* - [T=text/html]

当有人访问“http://www.yoursite.com/ anyPageName.xhtml ”时,此代码段会生效。如果是Internet Explorer,则会将文档类型覆盖为 text / html ,而不是 application / xhtml + xml 。否则,任何其他浏览器都会正常打开xhtml。


问题:如何让代码片段#2适用于只包含目录路径的网址?

(它仅适用于“http://www.yoursite.com/ pageName.xhtml ”;如何让它适用于“http://www.yoursite.com/ optionalFolder /“?)

换句话说,DirectoryIndex index.xhtml在代码片段#2中不起作用(它为IE重写了RewriteRule;如果我添加DirectoryIndex,IE将自动下载xhml)