プログラミング言語や環境設定を中心としたパソコン関連の技術メモです。
主にシステム開発中に調べたことをメモしています。TIPS的な位置付けで、気が向いたときにちまちま更新していきます。
.htaccessを使って、特定のユーザーエージェント「以外」からのアクセスをリダイレクトする
結論から書くと、例えば

RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} !iPhone
RewriteRule .* http://www.example.com/ [R=302,L]

のように

RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} !【対象のユーザーエージェント】
RewriteRule 【対象のディレクトリ】 【転送先のURL】 [R=302,L]

の形式で書けばOKです。

それでは詳細を書いていきます。

.htaccessを使って、特定のユーザーエージェントからのアクセスをリダイレクトする
の記事で書いた通り、特定ユーザーエージェントからのアクセスをリダイレクトするやり方は分かりました。

じゃあ、逆はどーすんの(--?

というのが調べたきっかけです。

……(--)

基本的には、否定のビックリマーク付けるだけでした_| ̄|○

具体的なやり方は、こんな感じですφ(--)

RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} !iPhone
RewriteRule .* http://www.example.com/ [R=302,L]

考えてみれば当たり前ですね。
パッと思いつかなかった自分にちょっとヘコんでいます。

ただし、対象のユーザーエージェントに半角スペースが含まれる場合は、ご注意ください。

例を挙げて順番に説明します。
例えば

RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} "MSIE 6"
RewriteRule .* http://www.example.com/ [R=302,L]

と記述すると、ユーザーエージェントに「MSIE 6」が「含まれる」の指定になります。
IE6でアクセスすると「http://www.example.com/」にリダイレクトされます。

その逆、IE6「以外」でアクセスしたときに「http://www.example.com/」にリダイレクトするために
ビックリマークを付けて

RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} !"MSIE 6"
RewriteRule .* http://www.example.com/ [R=302,L]

と記述したところ……500エラーになりました(-A-)

なんか、ダメみたいです。

ほんで、あれやこれやと試してみたところ、ダブルクォートを取っ払って、
半角スペースを「\(バックスラッシュ)」でエスケープすれば大丈夫でした。
具体的には、こんな指定ですφ(--)

RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} !MSIE\ 6
RewriteRule .* http://www.example.com/ [R=302,L]

これが正しい書き方なのかは自信がありませんが、
取りあえず動いたので、良しとしています。
もし間違っていたら、気が向いたらメールでこっそり教えてくださいm(__)m

取りあえず、そんな感じ\(--)/
スポンサーリンク
 
このエントリーをはてなブックマークに追加 

category:● 環境設定関連  thema:パソコンな日々 - genre:コンピュータ  Posted by ササキマコト 

  関連記事