この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。
こんにちはカツオです。
今日はrobots.txtの書き方について説明します。
というのも
webサーバーでmongrelを使ったrailsアプリで、mongrelがよく落ちるのですが、
クローラーのアクセス数が多いので、
googleのクローラーをIPで制限してみたら、
mongrelの落ちる回数が、極端に減りました。
対策の一つとして、robots.txtを書く機会があったので、ご紹介です。
■robots.txtとは?
クローラーや、スパイダー、検索ロボットといわれる
検索エンジンのインデックスを取得するために、web上を巡回しているソフトがあります。
もちろんそれらにアクセスされると、
検索エンジンのインデックスに登録される可能性があります。
しかし、サイトを運営していれば
インデックスされたくないページ等もあるでしょう。
そういったページ等をアクセスさせないよう命令するのが
robots.txtです。
■robots.txtの書き方
基本的にはrobotsテキストでは2つの命令がかけます。
1.アクセス制限
2.アクセス間隔の調整
上記2つです。
まずアクセス制限から説明します。
クローラーのアクセスを制限する場合
2種類の記述が必要です。
User-Agent: 命令の対象となるロボット
Disallow: 制限するページまたはディレクトリ
例)全てのロボットに、全てのページをインデックスさせない場合
User-Agent: *
Disallow: /
例)googleのクローラーから、testというディレクトリを制限する場合
User-Agent: Googlebot
Disallow: /test
例)yahooのクローラーから、「/test/index.html」というページを制限する場合
User-Agent: Slurp
Disallow: /test/(もしくは/test/index.html)
このような形で表記します。
例)複数のクローラーを制御する場合
1行あけて次のUser-Agentを書いてください。
User-Agent: Googlebot
Disallow: /test
User-Agent: Slurp
Disallow: /test/
例)複数の制限したいディレクトリがある場合
Disallowを行をあけずに書いてください。
User-Agent: *
Disallow: /test
Disallow: /demo
また、クローラーのアクセス間隔を指定する場合ですが
一度アクセスがあったら、次のアクセスまでに30秒間隔をあける場合は
○百度のクローラ
User-Agent:baiduspider
Crawl-Delay: 30
○yahooのクローラー
User-Agent:Slurp
Crawl-Delay:0.5
※yahooに関しては、単位が”分”らしいです。
○googleのクローラー
Crawl-Delayのコマンドにgoogleは対応していないので、
googleウェブマスターツールで
アカウント登録して、クローラーのアクセス頻度を下げるしかないようです。
■robots.txtの設置箇所
robots.txtの設置箇所はルートディレクトリと決められています。
弊社のURLの場合(http://www.kbmj.com/)
http://www.kbmj.com/robots.txt
このような階層に置かなければいけません。
※無料ブログの場合等は設置権限がない場合があります。
■robots.txtのファイル名
robots.txtのファイル名は間違えず、半角小文字で書きましょう
○ robots.txt
↓これは間違いです。
× robot.txt
× robots.text
× robots.txt
■補足
全てのクローラーがrobots.txtを読んでくれるわけではなく、
なかなか読んでくれないクローラーもあるようです。
ただ、もし、クローラーのアクセスでサーバー負荷が増えてしまっていたりする場合は、
一度試してみたら、いかがでしょう。