Htaccess规则。从Android版本重定向到PC版本

时间:2012-11-07 14:05:16

标签: .htaccess mod-rewrite

我正在尝试从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]

但仍然无法正常工作?

1 个答案:

答案 0 :(得分:0)

如果所有Android / iPhone /移动网址都有直接的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]