2016.
03.
05
13:10:35
結論から書くと、例えば
のように
の形式で書けばOKです。
それでは詳細を書いていきます。
私の運営しているWebサービスに、いまだにIE6からのアクセスがありましてね。
「さすがにIE6は切っていいだろう」と判断したので、
IE6でアクセスしたら「お使いのブラウザは古いからうんぬんかんぬん」みたいな
警告ページに飛ばすことにしたのです。
ほんで、具体的にはどーやるの(--?
ふむふむ(--)
でOKでした。
の「"MSIE 6"」が対象のユーザーエージェント指定です。
全体で、ユーザーエージェントに「MSIE 6」という文字が「含まれる」の指定になります。
なお、半角スペースの扱いですが、今回はダブルクォートで囲みました。
私の環境で試してみたところ「\(バックスラッシュ)」でエスケープしても大丈夫のようです。
試しに
と指定して、半角スペースをエスケープしたところ、普通に動きました。
あと、面倒くさいので実際に確認はしていませんが、正規表現指定のはずです。
例えば
と指定すれば、ユーザーエージェントが「Mozilla」という文字で「始まる」の指定になります。
次に
の部分ですが「.*」は対象のディレクトリです。
「.(任意の1文字)」「*(任意の0文字以上)」なので
「何か書いてあれば」つまり「全部」な指定になっています。
特定のディレクトリだけ拒否りたい場合は、ここでディレクトリを指定してください。
ただし、ここも正規表現指定です。
例えば
と指定してしまうと、
などが対象になってしまいます。
「^(~で始まる)」「$(~で終わる)」を忘れないでくださいね。
「http://www.example.com/」の部分はリダイレクト先のURLだから良いとして、
あと気になるとしたら
の部分ですかね。
「R=302」は「302リダイレクトですよー」の意味です。
301リダイレクトにしたい場合は「R=301」と書きます。
301リダイレクトと302リダイレクトの違いについては
「301リダイレクトと302リダイレクトの違い。」の記事をご覧ください。
[L]は「ここが最後の行ですよ~」の目印です。
この行以降に書いたRewriteRuleは無視されます。
そんなところです。
最後にもう一度まとめておきますね。
.htaccessを使って、特定ユーザーエージェントからのアクセスをリダイレクトさせた場合は
と書けばOKです。
そんな感じ\(--)/
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} iPhone
RewriteRule .* http://example.com/ [R=302,L]
RewriteCond %{HTTP_USER_AGENT} iPhone
RewriteRule .* http://example.com/ [R=302,L]
のように
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} 【対象のユーザーエージェント】
RewriteRule 【対象のディレクトリ】 【転送先のURL】 [R=302,L]
RewriteCond %{HTTP_USER_AGENT} 【対象のユーザーエージェント】
RewriteRule 【対象のディレクトリ】 【転送先のURL】 [R=302,L]
の形式で書けばOKです。
それでは詳細を書いていきます。
私の運営しているWebサービスに、いまだにIE6からのアクセスがありましてね。
「さすがにIE6は切っていいだろう」と判断したので、
IE6でアクセスしたら「お使いのブラウザは古いからうんぬんかんぬん」みたいな
警告ページに飛ばすことにしたのです。
ほんで、具体的にはどーやるの(--?
ふむふむ(--)
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} "MSIE 6"
RewriteRule .* http://www.example.com/ [R=302,L]
RewriteCond %{HTTP_USER_AGENT} "MSIE 6"
RewriteRule .* http://www.example.com/ [R=302,L]
でOKでした。
%{HTTP_USER_AGENT} "MSIE 6"
の「"MSIE 6"」が対象のユーザーエージェント指定です。
全体で、ユーザーエージェントに「MSIE 6」という文字が「含まれる」の指定になります。
なお、半角スペースの扱いですが、今回はダブルクォートで囲みました。
私の環境で試してみたところ「\(バックスラッシュ)」でエスケープしても大丈夫のようです。
試しに
%{HTTP_USER_AGENT} MSIE\ 6
と指定して、半角スペースをエスケープしたところ、普通に動きました。
あと、面倒くさいので実際に確認はしていませんが、正規表現指定のはずです。
例えば
%{HTTP_USER_AGENT} ^Mozilla
と指定すれば、ユーザーエージェントが「Mozilla」という文字で「始まる」の指定になります。
次に
RewriteRule .* http://www.example.com/ [R=302,L]
の部分ですが「.*」は対象のディレクトリです。
「.(任意の1文字)」「*(任意の0文字以上)」なので
「何か書いてあれば」つまり「全部」な指定になっています。
特定のディレクトリだけ拒否りたい場合は、ここでディレクトリを指定してください。
ただし、ここも正規表現指定です。
例えば
/test
と指定してしまうと、
/test/
/test/index.html
/test.html
/test2.html
/hoge/test2/index.html
/test/index.html
/test.html
/test2.html
/hoge/test2/index.html
などが対象になってしまいます。
「^(~で始まる)」「$(~で終わる)」を忘れないでくださいね。
「http://www.example.com/」の部分はリダイレクト先のURLだから良いとして、
あと気になるとしたら
[R=302,L]
の部分ですかね。
「R=302」は「302リダイレクトですよー」の意味です。
301リダイレクトにしたい場合は「R=301」と書きます。
301リダイレクトと302リダイレクトの違いについては
「301リダイレクトと302リダイレクトの違い。」の記事をご覧ください。
[L]は「ここが最後の行ですよ~」の目印です。
この行以降に書いたRewriteRuleは無視されます。
そんなところです。
最後にもう一度まとめておきますね。
.htaccessを使って、特定ユーザーエージェントからのアクセスをリダイレクトさせた場合は
RewriteEngine on
(リライトすんぞ!の宣言)
RewriteCond %{HTTP_USER_AGENT} "MSIE 6"
(ユーザーエージェントに「MSIE 6」が含まれていたらリライトすんぞ!)
RewriteRule .* http://www.example.com/ [R=302,L]
(全部「http://www.example.com/」に302リダイレクトすんぞ!)
(リライトすんぞ!の宣言)
RewriteCond %{HTTP_USER_AGENT} "MSIE 6"
(ユーザーエージェントに「MSIE 6」が含まれていたらリライトすんぞ!)
RewriteRule .* http://www.example.com/ [R=302,L]
(全部「http://www.example.com/」に302リダイレクトすんぞ!)
と書けばOKです。
そんな感じ\(--)/