|
htaccess解説/アクセス制限(ユーザーエージェント)
ホームページへのアクセスには、アクセスしたパソコンのブラウザやOSの情報が含まれています。この情報をユーザーエージェント(User-Agent)と言います。 htaccessでユーザーエージェントを判定することで、特定のブラウザやOSからのみアクセス制御することが可能となります。 ただし、ユーザーエージェントは偽装も可能なため必ず正しい情報とは限りません。
実際に付加されている情報は、当社「 IPアドレス確認」サービスでご確認いただけます。
1.OSとブラウザによるアクセス制限を行う
多くのブラウザで、User-AgentにOSやブラウザの情報が含まれています。htaccessでこの情報を利用することによりアクセスの制御(許可/拒否)が可能です。
(注意)ユーザーエージェントは偽装される可能性があるため、正確な判定はできません。
(User-Agent例) 以下は同一パソコンから3種類のブラウザを使用した時に発信されていたUser-Agent
【InternetExplorer8】 Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.5; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
【Firefox3.6】 Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.10) Gecko/20100914 Firefox/3.6.10 (.NET CLR 3.5.30729)
【Chrome6】 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.472.63 Safari/534.3
上記は、「Windows」(緑色)でOS、「MSIE」「Frirefox」「Chrome」でブラウザが分かります。
「.htaccess」ファイル
この設定で、ユーザーエージェントに「MSIE」が含まれる場合のみアクセス可能となります。
SetEnvIf User-Agent "MSIE" ok_ua
order
deny,allow
deny from all
allow from env=ok_ua
| 構文 |
意味 |
| SetEnvIf User-Agent |
User-Agentの条件を正規表現で記載します。 例は、「MSIEを含む」の条件となります。 条件に該当するときに「ok_ua」が真(true)となります。 正規表現のエスケープが必要です。 |
| order |
拒否と許可の見る順番を指定している allow:許可する、deny:拒否する 例は、「拒否(deny)」→「許可(allow)」の順に見る |
| deny |
「拒否」する条件を指定 例は、「from all」としてすべて拒否しています。 |
| allow |
「許可」する条件を指定 例は、「SetEnvIf User-Agent」で指定した条件に該当しているかを判定しています。 該当する場合に「許可」となります。 |
【注意事項】
- allowとdeny
orderの順番に注意してください。上記では「すべて拒否だけどallowで指定した条件に該当する場合は許可」となります。逆にした場合、「allowで指定した条件に該当する場合は許可だけど、やっぱりすべて拒否」となり、全てのアクセスが拒否されてしまいます。
- ユーザーエージェント(User-Agent)
ユーザーエージェントは偽装が可能なため正確には判定できません。このため、正常なアクセスなのに拒否する可能性があります。
|
2.検索エンジンによるクローラーのアクセス制限を行う
多くの検索サイトでは、クローラー(検索エンジンによるロボット巡回)によるアクセスを行う場合、ユーザーエージェントに情報を設定しています。htaccessでこの情報を利用することによりアクセスの制御(許可/拒否)が可能です。
(注意)ユーザーエージェントは偽装される可能性があるため、正確な判定はできません。
(User-Agent例)
以下は代表的な検索サイトからのクローラー時にUser-Agentに設定している内容となります。
【Yahoo】
Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp)
【Google】
Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
【MSN】
msnbot/2.0b (+http://search.msn.com/msnbot.htm)
上記以外は、yahooやgoogleなどで「検索エンジン User-Agent」を検索すると、多くの情報が確認できます。
上記の検索エンジンのアクセスを拒否することは少ないと思いますが、海外からクローラーによる大量のアクセスが行われることもあり、検索エンジンを拒否することもあります。
「.htaccess」ファイル この設定で、bot.example.jp(仮想の検索エンジンクローラー)からのアクセスを拒否することが出来ます。
SetEnvIf User-Agent "bot.example.jp" ng_ua
order allow,deny
allow from all
deny from env=ng_ua
| 構文 |
意味 |
| SetEnvIf User-Agent |
User-Agentの条件を正規表現で記載します。 例は、「bot.example.jpを含む」の条件となります。 条件に該当するときに「ng_ua」が真(true)となります。 |
| order |
拒否と許可の見る順番を指定している allow:許可する、deny:拒否する 例は、「許可(allow)」→「拒否(deny)」の順に見る |
| allow |
「許可」する条件を指定 例は、「from all」としてすべて許可しています。 |
| deny |
「拒否」する条件を指定 例は、「SetEnvIf User-Agent」で指定した条件に該当しているかを判定しています。 該当する場合に「拒否」となります。 |
【注意事項】
- allowとdeny
orderの順番に注意してください。上記では「すべて許可だけどdenyで指定した条件に該当する場合は拒否」となります。逆にした場合、「denyで指定した条件に該当する場合は拒否だけど、やっぱりすべて許可」となり、アクセス制限されません。
- ユーザーエージェント(User-Agent)
ユーザーエージェントは偽装が可能なため正確には判定できません。このため、正常なアクセスなのに拒否する可能性があります。
|
その他
|