【发布时间】:2013-04-16 17:36:02
【问题描述】:
我尝试了此页面 (Using .htaccess to redirect obsolete browsers) 上的所有建议,但都没有奏效。我用谷歌搜索但没有找到一个可行的例子。
在处理具有两位数版本号的浏览器时,这些都不起作用。
例如,下面的行阻止了 Opera v.1.x 和 Opera v.12.x:
RewriteCond %{HTTP_USER_AGENT} "Opera/1\." [NC,OR]
下面的代码也不起作用:
RewriteCond %{HTTP_USER_AGENT} "Opera/[1-11]\." [nc,or]
RewriteCond %{HTTP_USER_AGENT} "Opera/[1-9][0-1]?\." [nc,or]
重定向 Opera 版本 1.x-11.x 的正确代码是什么?
我做了更多的测试,发现了一些对我来说很奇怪的东西。如果我尝试使用 Opera 版本 11 访问该站点,则在使用以下内容时重写规则会不情愿地启动:
RewriteCond %{HTTP_USER_AGENT} "Opera/9\." [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "Opera/8\." [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "Opera/7\." [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "Opera/6\." [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "Opera/5\." [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "Opera/4\." [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "Opera/3\." [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "Opera/2\." [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "Opera/1\." [NC,OR]
如果我只是注释掉...
RewriteCond %{HTTP_USER_AGENT} "Opera/9\." [NC,OR]
...Opera 浏览器版本 11 未重定向。
更具体地说,如果某些版本的浏览器符合规则,我会尝试将它们重定向到特定页面。这是一个示例,但它没有按预期工作,我认为必须有一种更简洁的方式来编写每个条件:
<ifmodule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} "Firefox/3\." [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "Firefox/2\." [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "Firefox/1\." [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "Opera/9\." [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "Opera/8\." [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "Opera/7\." [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "Opera/6\." [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "Opera/5\." [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "Opera/4\." [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "Opera/3\." [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "Opera/2\." [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "Opera/1\." [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "MSIE 7\." [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "MSIE 6\." [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "MSIE 5\." [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "MSIE 4\." [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "MSIE 3\." [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "MSIE 2\." [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "MSIE 1\." [NC]
RewriteRule . http://www2.mysite.com/page.php [L]
</ifmodule>
这就是我想要做的:
<ifmodule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} "Firefox/if less than version 3\." [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "Opera/if less than version 10.1\." [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "MSIE if less than version 7\." [NC]
RewriteRule . http://www2.mysite.com/page.php [L]
</ifmodule>
【问题讨论】:
标签: .htaccess redirect browser rewrite obsolete