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]

問題は、ユーザーエージェントがiphoneとandroidのどちらかである場合、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 に答える