2010-10-29 55 views
2

正如标题所说,我想使用XHTML为我的首页,我想使用Internet Explorer浏览器的访问者重定向到一个不同的页面(一个。用更少的内容HTM,说:“你正在使用IE,坚韧tittie”)。重定向IE浏览器中使用的.htaccess(远离的XHTML)

由于IE自动下载应用程序/ XHTML文件,我不能这样使用JavaScript和诸如此类的东西,所以我觉得唯一的选择就是使用的.htaccess。但经过近2个小时的谷歌搜索类似的帖子htaccess的例子,我仍然无法得到它的工作,我得到403或500在IE浏览器和铬/火狐浏览器..

这是我最后尝试:

<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

碰运气(可能是因为我不知道的.htaccess)的很多后我已经想通了:

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

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


我还发现了一个巧妙的方法来获取Internet Explorer实际读取相同.xhtml为text/html,所以你不会有保持的同一部位的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为刚刚的目录路径的URL工作的?

(它只适用于“http://www.yoursite.com/ pageName.xhtml”;我怎样才能让它为“http://www.yoursite.com/optionalFolder/”工作? )

换句话说,DirectoryIndex index.xhtml不片段#2工作(它压倒了IE的重写规则,如果我添加的DirectoryIndex,IE就会自动下载XHML)