我正在尝试从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]
但仍然无法正常工作?
答案 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]