モバイルのサイトを作るときに、PCなどの端末からのアクセスをブロックする
あるいは別のページに飛ばすことが必要になることがあると思います。
mod_rewriteを使えば、ユーザーエージェントを使いまわせるので、
phpなどですべてのページにユーザーエージェントの選り分け処理を書く手間が省けます。
以下はhttpd.confのvirtualhostディレクティブの中に書いたものです。
なおhtaccessに書く場合は若干書き方が変わるので注意してください。
Code:
RewriteEngine On#rewrite engineの初期化 | |
RewriteLog "/var/log/httpd/yourdomain.log"#logの書き出し | |
RewriteLogLevel 3#logの書きだしレベル(0-9の間) | |
| |
#以下ケータイ端末のユーザーエージェントをANDで連結する | |
RewriteCond %{HTTP_USER_AGENT} !^DoCoMo [NC] | |
RewriteCond %{HTTP_USER_AGENT} !^KDDI [NC] | |
RewriteCond %{HTTP_USER_AGENT} !^Up.Browser [NC] | |
RewriteCond %{HTTP_USER_AGENT} !^J-PHONE [NC] | |
RewriteCond %{HTTP_USER_AGENT} !^vodafone [NC] | |
RewriteCond %{HTTP_USER_AGENT} !^SoftBank [NC] | |
RewriteCond %{HTTP_USER_AGENT} !^MOT- [NC] | |
RewriteCond %{HTTP_USER_AGENT} !^Semulator [NC] | |
RewriteCond %{HTTP_USER_AGENT} !^Nokia [NC] | |
RewriteCond %{HTTP_USER_AGENT} !^Y\!J [NC] | |
| |
#上記以外のユーザーエージェントがアクセスした場合は別ファイルに飛ばす | |
RewriteRule ^/(.+)$ /disable.php [L] |
注意すべきはひとつのルールに対して条件を設定していくので
複数のルールにたいしても共通の条件を設定したい場合は
ルールの数だけ同じ条件を書かなければいけないということです。
これにはだいぶハマった・・・。
なお現在の検索エンジンのクローラーのユーザーエージェントは
ドコモやソフトバンク、AU、またはNOKIAのユーザーエージェントを
偽装(実装?)してアクセスしてくるので問題ないと思われます。
Trackback URL (right click and copy shortcut/link location)