1

我正在尝试使用以下规则从 android 版本重定向到 pc 版本:

http://example.com/android/categories



     RewriteCond %{HTTP_USER_AGENT} !^Android [NC]
RewriteCond %{REQUEST_URI} !^categories$ [NC]
RewriteRule categories$ /categories [L,R,QSA]

问题是android版本进入了重写条件,即使我告诉它不要去如果用户代理是iphone和android ..

为什么android版本会读取该规则?

在这个例子中:

 RewriteCond %{HTTP_USER_AGENT} "!(android|blackberry|googlebot-mobile|iemobile|ipad|iphone|ipod|opera mobile|palmos|webos)" [NC]
RewriteRule hot$ /hot-apps  [L,R,QSA]
RewriteRule android/news$ /news  [L,R,QSA]

第一个重写规则有效..而下一个不..

我也这样做了:

RewriteCond %{HTTP_USER_AGENT} "!(android|blackberry|googlebot-mobile|iemobile|ipad|iphone|ipod|opera mobile|palmos|webos)" [NC]
RewriteRule iphone/contact$ /contact [L,R,QSA]

这也不起作用:

 RewriteCond %{HTTP_USER_AGENT} "!(android|blackberry|googlebot-mobile|iemobile|ipad|iphone|ipod|opera mobile|palmos|webos)" [NC]
RewriteCond %{REQUEST_URI} !^/android/ [NC]
RewriteRule news$ /news  [L,R,QSA]

但还是不能正常工作?

4

1 回答 1

0

如果所有 Android / iPhone / 移动 URL 都有直接的 PC 等效项,例如

http://example.com/android/categories   <->   http://example.com/categories
http://example.com/android/news         <->   http://example.com/news
http://example.com/iphone/contact       <->   http://example.com/contact

然后,您可以按照以下几行使用单个规则:

 RewriteBase /
 RewriteCond %{HTTP_USER_AGENT}     !(droid|blackberry|ipad|iphone|ipod|mobile|palmos|webos)  [NC]
 RewriteCond %{REQUEST_URI}         ^/(android|iphone)/ [NC]
 RewriteRule ^(android|iphone)/(.*)  /$1 [L,R]
于 2012-11-17T17:37:15.640 回答