bingbot他クローラーの巡回によるPHPメモリオーバーエラー対処

(2016年)9月初めにショップwebのサーバープランを変更したついでに、レスポンシブデザイン(HTML共通化)化し、CSSでパソコン系とモバイル系に分けるように変更した。

プラグインを利用しなくともモバイル表示できるようにしたので、若干表示スピードが上がったように思う。

そのせいか分からないが、やたら色々なクローラーBOTが巡回するようになってきた。これがメモリをやたら食い、PHPメモリエラーを起こすのである。

はじめは、なぜエラーが出ているのか分からず、数日ほっておいたが、エラーに伴いweb表示がフリーズする事態を招きはじめたので本格的にエラーログとアクセスログを見比べての調査をおこなった。

するとbingBOTと他のBOTが来たときにメモリエラー(PHP Fatal error: Allowed memory size of 100663296 bytes exhausted)を起こしていたのであった。

ま、google-imageBotやYahoo! Slurpも時々、エラーになりますけど頻度が圧倒的に少なかったので今回は対象から外しています。

エラーの対処として、クロールの禁止とクロール間隔の設定をrobots.txtに施した(9月24-25日にかけて)。

AhrefsBotとXoviBotはクロール禁止

bingbotはクロール間隔30秒に設定

今後、他のBOTでもエラーが出るようであれば、その都度、対処しよう。

(2016年9月26日現在、エラーは出ていない、まだ設定一日目だけどw)

robot.txtに設定

巡回禁止指定

User-agent: bingbot/2.0
Disallow: /

または巡回間隔

User-agent: bingbot/2.0
Crawl-delay: 30

robot.txtの設定はエージェントによっては無視するので、どうしても巡回禁止する場合は.htaccessでの設定が効果的

.htaccessにボット巡回禁止設定


#Deny bingbot <- この行は無くてもok メモ書き
SetEnvIf User-Agent "bingbot" Nobingbot <- エージェント名を指定
Order Allow,Deny
Allow from all
Deny from env=Nobingbot

関連記事

ブルートフォースアタックにご注意を