如何使用.htaccess重定向过时的浏览器

如何使用.htaccess重定向过时的浏览器,.htaccess,redirect,browser,rewrite,obsolete,.htaccess,Redirect,Browser,Rewrite,Obsolete,我尝试了这一页上的所有建议(),但都无效。我在谷歌上搜索过,但没有找到一个有效的例子 当处理两位数版本号的浏览器时,这些都不起作用 例如,下面的行阻止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 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>

重新启动发动机
重写cond%{HTTP_USER_AGENT}“Firefox/3\”[NC,或]
重写cond%{HTTP_USER_AGENT}“Firefox/2\”[NC,或]
重写cond%{HTTP_USER_AGENT}“Firefox/1\”[NC,或]
重写cond%{HTTP_USER_AGENT}“Opera/9\”[NC,或]
重写cond%{HTTP_USER_AGENT}“Opera/8\”[NC,或]
重写cond%{HTTP_USER_AGENT}“Opera/7\。”[NC,或]
重写cond%{HTTP_USER_AGENT}“Opera/6\”[NC,或]
重写cond%{HTTP_USER_AGENT}“Opera/5\”[NC,或]
重写cond%{HTTP_USER_AGENT}“Opera/4\”[NC,或]
重写cond%{HTTP_USER_AGENT}“Opera/3\”[NC,或]
重写cond%{HTTP_USER_AGENT}“Opera/2\。”[NC,或]
重写cond%{HTTP_USER_AGENT}“Opera/1\”[NC,或]
重写cond%{HTTP_USER_AGENT}“MSIE 7\。”[NC,或]
重写cond%{HTTP_USER_AGENT}“MSIE 6\。”[NC,或]
重写cond%{HTTP_USER_AGENT}“MSIE 5\。”[NC,或]
重写条件%{HTTP_USER_AGENT}“MSIE 4\。”[NC,或]
重写cond%{HTTP_USER_AGENT}“MSIE 3\。”[NC,或]
重写cond%{HTTP_USER_AGENT}“MSIE 2\。”[NC,或]
重写cond%{HTTP_USER_AGENT}“MSIE 1\。”[NC]
重写规则。http://www2.mysite.com/page.php [L]
以下是我想做的:

<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>

重新启动发动机
重写cond%{HTTP_USER_AGENT}“Firefox/如果低于版本3\”[NC,或]
重写cond%{HTTP_USER_AGENT}“Opera/if低于10.1版\.”[NC,或]
重写cond%{HTTP_USER_AGENT}“MSIE如果低于版本7\”[NC]
重写规则。http://www2.mysite.com/page.php [L]
试试:


鉴于Opera的用户代理没有遵循您期望的格式,只需要这一行来排除Opera 12:

RewriteCond %{HTTP_USER_AGENT} !Opera/9\..*Version/12\. [NC,OR]
尝试:


鉴于Opera的用户代理没有遵循您期望的格式,只需要这一行来排除Opera 12:

RewriteCond %{HTTP_USER_AGENT} !Opera/9\..*Version/12\. [NC,OR]

下面的代码符合我的要求:

<ifmodule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} "Firefox/[1-3]\." [NC,OR]
RewriteCond %{HTTP_USER_AGENT} Opera/9\..*Version/(1[10]|[1-9])\. [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "Opera/[1-8]\." [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "MSIE [1-7]\." [NC]
RewriteRule . http://www2.mysite.com/page.php [L]
</ifmodule>

重新启动发动机
重写cond%{HTTP\u USER\u AGENT}“Firefox/[1-3]\”[NC,或]
重写cond%{HTTP\u USER\u AGENT}Opera/9\..*版本/(1[10]\[1-9])\。[北卡罗来纳州,或]
重写cond%{HTTP\u USER\u AGENT}“Opera/[1-8]\”[NC,或]
重写条件%{HTTP\u USER\u AGENT}“MSIE[1-7]\”[NC]
重写规则。http://www2.mysite.com/page.php [L]

谢谢林乔恩!您的代码建议帮助我更好地理解了:)

下面的代码符合我的要求:

<ifmodule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} "Firefox/[1-3]\." [NC,OR]
RewriteCond %{HTTP_USER_AGENT} Opera/9\..*Version/(1[10]|[1-9])\. [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "Opera/[1-8]\." [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "MSIE [1-7]\." [NC]
RewriteRule . http://www2.mysite.com/page.php [L]
</ifmodule>

重新启动发动机
重写cond%{HTTP\u USER\u AGENT}“Firefox/[1-3]\”[NC,或]
重写cond%{HTTP\u USER\u AGENT}Opera/9\..*版本/(1[10]\[1-9])\。[北卡罗来纳州,或]
重写cond%{HTTP\u USER\u AGENT}“Opera/[1-8]\”[NC,或]
重写条件%{HTTP\u USER\u AGENT}“MSIE[1-7]\”[NC]
重写规则。http://www2.mysite.com/page.php [L]

谢谢林乔恩!您的代码建议帮助我更好地理解了:)

您能解释一下版本号部分(1[10]|[1-9])是如何工作的吗?我还需要将此条件应用于不同浏览器的不同版本。@Jeff
()
部分提供了两个选项,以
|
字符分隔。第一个是
1[10]
,另一个是
[1-9]
。第一个匹配10或11,第二个匹配1到9。所以两者加起来,匹配1到11。@Jeff这不起作用,因为。你需要做更多的研究,看看你想做什么match@Jeff正如您在提供Opera V12用户代理的链接中所看到的,它有一个
Version/12.
字符串,为什么不直接匹配它呢?就像在
RewriteCond%{HTTP\u USER\u AGENT}Opera[或]RewriteCond%{HTTP\u USER\u AGENT}中一样!版本/12\.
?对不起。我不知道Opera的UA就是这样建立的。现在一切都变得更有意义了。我编辑了我的原始帖子,以展示我正在努力实现的目标。我如何编写条件,以便重定向任何低于我指定的版本(例如Opera 10.1)?对不起,我一开始就不太清楚。谢谢您的帮助。您能解释一下版本号部分(1[10]|[1-9])是如何工作的吗?我还需要将此条件应用于不同浏览器的不同版本。@Jeff
()
部分提供了两个选项,以
|
字符分隔。第一个是
1[10]
,另一个是
[1-9]
。第一个匹配10或11,第二个匹配1到9。所以两者加起来,匹配1到11。@Jeff这不起作用,因为。你需要做更多的研究,看看你想做什么match@Jeff正如您在提供Opera V12用户代理的链接中所看到的,它有一个
Version/12.
字符串,为什么不直接匹配它呢?就像在
RewriteCond%{HTTP\u USER\u AGENT}Opera[或]RewriteCond%{HTTP\u USER\u AGENT}中一样!版本/12\.
?对不起。我不知道Opera的UA就是这样建立的。现在一切都变得更有意义了。我编辑了我的原始帖子,以展示我正在努力实现的目标。我如何编写条件,以便重定向任何低于我指定的版本(例如Opera 10.1)?对不起,我一开始就不太清楚。谢谢您的帮助。只有在您不是“”的重定向访问者的情况下,它才会起作用。如果要在同一网站中使用此重定向,则需要排除此页面以避免重定向循环。使用“RewriteCond%{REQUEST\u URI}!^www2。