0

私はモバイルからヒットしたときにこれを行おうとしています。モバイルWebサイトにリダイレクトし、PCからは通常のWebサイトを意味します。しかし、条件は適切に機能しません。

<IfModule mod_rewrite.c>
  RewriteEngine on


  RewriteCond %{HTTP_USER_AGENT} "{android|blackberry|ipad|iphone|ipod|iemobile|opera mobile|palmos|webos|googlebot-mobile}" [NC]
  RewriteRule ^(.*)$ http://localhost:8080/home.html [L,R=301]

  RewriteCond %{HTTP_USER_AGENT} "!{android|blackberry|ipad|iphone|ipod|iemobile|opera mobile|palmos|webos|googlebot-mobile}" [NC]
  RewriteRule ^abc.html$ /abc1.html [R=301,L]
  RewriteRule ^1.html$ /2.html [R=301,L]

</IfModule>

モバイルデバイスからローカルホストを押すと、モバイルWebサイトが正しく表示されますが、localhost / abc.htmlを指定すると、2番目の条件が表示されますが、実際にはモバイルWebサイトに移動する必要があります。コードに問題はありますか?

4

1 に答える 1

1

それほど多くはありませんが、一連のポイントはあなたのアプローチに関するものです:

  • cond 正規表現で正しい () ではなく {} を使用するのはなぜですか?
  • 逆は常に前の [L] ルールに一致するため、2 番目の条件は冗長ですか? (ルール 3 にはこの条件がありません。
  • a を使用しRewriteBase /ないと、エンジンが混乱することがあるため、 a を使用する必要があります。
  • ルール 2 と 3 の置換文字列の先頭の / を省略します

最後に、そして最も重要なことですが、単純な内部リダイレクトの代わりに 301 リダイレクトを行っているのはなぜですか?

RewriteCond %{HTTP_USER_AGENT} (android|blackberry|ipad|iphone|ipod|iemobile|opera mobile|palmos|webos|googlebot-mobile) [NC]
RewriteRule ^(.*)$ mobile/home.html [L]

RewriteRule ^abc.html$ abc1.html    [L]

RewriteRule ^1.html$   2.html       [L]
于 2012-07-09T09:25:10.403 に答える