最近、自分のWEBページのアクセス数の割には、リクエスト数がやたら多くて、サーバーに負荷がかかっていたため、原因を調べてみることにしましたみることにしました。すると、検索エンジンの百度(バイドゥ)が、やたらページをクロールしまくっていることがわかりました。
WEBページのクロールと言ったら、Googleや他の検索エンジンもしていることなんですが、Googleの場合、サイトに負荷をかけないような対策がとられています。百度(バイドゥ)も昔に比べてだいぶんマシになったらしいのですが、どうも頭の悪いクローラーのようで、動的なサイトだと相変わらず無闇やたらにクロールしてくるようです。僕のサイトで言えば、1日に10,000~15,000ものリクエストを要求してきて、サーバーに負荷がかなりかかるので、百度のアクセスを拒否することにしました。
拒否する方法は、いろいろあるのでしょうが、僕はあまり詳しくないので、手軽な.htaccessファイルを使う方法を使うことにしました。
やり方は簡単で、以下の文字列をコピーし、メモ帳などのテキストエディタに貼り付け、「.htaccess」というファイル名で保存し、あとはWEBページの拒否したいところに「.htaccess」ファイルをアップロードするだけです。
AddHandler cgi-script htaccess#<Files ~ "^\.(htaccess|htpasswd)$">
#deny from all
#</Files>order deny,allow
deny from baidu.jp
deny from baidu.com
deny from 119.63.192.0/21
ここに「.htaccess」ファイルが、そのままあるので、これをダウンロードしてサーバーにアップロードするだけでもいいです。レンタルサーバーなどの場合、「public_html」にアップロードしておけば、全ページて百度を拒否する設定になっています。
書いてある内容を簡単に説明。
AddHandler cgi-script htaccess
.htaccess ファイル自体の閲覧を拒否する設定。
#<Files ~ "^\.(htaccess|htpasswd)$">
#deny from all
#</Files>
これも、.htaccess ファイル自体の閲覧を拒否する設定ですが、ISPが許可していない場合もあるので、コメントアウトしてあります。上のAddHandlerが使えない場合は、#を取り除いてこちらの設定を使ってください。
order deny,allow
deny from baidu.jp
deny from baidu.com
deny from 119.63.192.0/21
アクセス制限の設定です。「deny from 119.63.192.0/21」で百度が使うIPの範囲を指定しているので、本来なら「deny from baidu.jp」「deny from baidu.com」の行は必要ないのですが、一応書いてあったほうがわかりやすいので。
で、実際へアクセス制限してみると、以下のようにリクエスト数が減ってサーバーへの負荷がかなり軽減されました。(20110306の途中から制限)
自分のサイトが、原因不明の負荷に悩まされているという場合は、一度試してみてもいいかもしれません。
タグ:パソコン操作