このすみノート

Webエンジニアが技術や趣味を書くブログです。

rebuildfm のQuoraで学ぶrobots.txt入門 - 検索ボットやクローラーのアクセスを制御しよう

rebuildfmの@kosamariさん回で、Quoraのrobots.txtについての話題がありました。

rebuild.fm

そんなにすごいのかと気になったので、調べてみることにしました。実際のQuoraのrobots.txtがこちらです。

https://www.quora.com/robots.txt

User-agent: Googlebot
Disallow: /ajax/
Disallow: /@async
Disallow: /*/@async
Disallow: /log/
Disallow: /*/log
...長いので省略...
User-agent: *
Allow: /$
Allow: /about$
Allow: /about/
Allow: /challenges$
Allow: /press$
Allow: /login/
Allow: /signup$
Disallow: /
Disallow: /ajax/
...

なんとこの記事を書いた時点で、1233行もあります!

1行ずつ解説することはできませんが、備忘録として内容を共有いたします。

robots.txtの基本形

  • User-agent: ボットやクローラー名を書きます
  • Crawl-Delay: クロールの時間間隔を指定します。ただし、数値を「秒」と解釈するのか「分」と解釈するのかによって、ボット次第でムラが発生する可能性があります
  • Disallow: クロールされたくないページやディレクトリを指定します
  • Allow: Disallowで指定されたディレクトリの中で、クロールしても良いページやディレクトリを指定します
  • Sitemap: サイト内のページ一覧です。検索ボットのインデックスの促進を手助けします

以下の「とある社会学屋の唯物論」様のページがとても参考になります。

www.geek.sc

User-agent

robots.txtのUser-agentでは、主に検索ボットを指定します。Quoraでは、きめ細やかに以下のサイトについて設定が書いてあります。

  • Googlebot: Googleの検索ボット
  • bingbot: Microsoftの検索ボット
  • msnbot: Microsoftの検索ボット
  • Slurp: Yahoo!の検索ボット
  • Facebot: Facebookのクローラー
  • baiduspider: 百度(バイドゥ)の検索ボット
  • Applebot: AppleのWebクローラー
  • exabot: フランスの検索エンジンExaleadのロボット
  • Twitterbot: Twitterのクローラー
  • LinkedInBot: LinkedInのクローラー
  • Feedly: RSSリーダーのFeedlyのクローラー
  • Pingdom: おそらく、Webサイト監視サービスのPingdom
  • Yandex: ロシアの検索エンジン
  • DuckDuckBot: DuckDuckGo、プライバシーに配慮した検索エンジン
  • ScoutJet:ScoutJet is the web crawler for IBM Watson.
  • Netvibes:https://www.netvibes.com/en

調べるのに疲れたので、以下は割愛いたします。

  • sosobot
  • seznambot
  • Teoma
  • Relcybot
  • PGBot
  • Laserlikebot

Disallow

Disallowには、ボットやクローラーがアクセスしてほしくないページを記載します。たとえば以下のケースでは、Googlebotは「/ajax/」の下にアクセスしないでくださいという設定になります。

User-agent: Googlebot
Disallow: /ajax/
Disallow: /*/log

アスタリスク(*)はワイルドカードで、正規表現のワイルドカードをイメージしてもらえると理解が進みます。

f:id:konosumi:20190202162353j:plain

Allow

Allowには、Disallowで拒否されているけれども、その中でボットやクローラーがアクセスしても良いページを記載します。以下のケースは、ドメイントップと/aboutページはアクセスしても良い設定です。

User-agent: *
Allow: /$
Allow: /about$
Allow: /about/

「User-agent: *」は、すべてのクローラーに対して発動する条件です。注意してほしいのは、これはあくまで検索ボットやクローラーに対する設定であり、ユーザーのアクセスをブロックするわけではありません。

また、行儀の悪いボットやクローラーは設定を無視する可能性があるため、100%アクセスされないことを保証するわけではない点はご注意ください。

Allowは書かなくても良い

QuoraのサイトにはAllowが書いてありますが、実際にAllowを書くことは少ないです。Disallowされていないページ(ディレクトリ)は、自動的にクロールの対象になります。

つまり、Disallowだけ書いておけば基本的には十分です。

たとえばログインユーザーしかアクセスできないマイページは、検索インデックスに登録しないでくださいといった設定を書きます。

User-agent: *
Disallow: /mypage

検索ボットやクローラーのアクセス制御は、サイトの負荷軽減に役立つ

サイト内のページ数が増えれば増えるほど、ボットやクローラーによるアクセスは増えます。私が以前担当していたとあるECサイトでは、ページ数が100万ページ以上ありました。

1日のアクセスの1/3が、検索ボットだった日もあるくらいです。

ボットからのアクセスは、適切にコントロールすると負荷を軽減することができます。それが「Crawl-Delay」です。

ameblo.jp

ただし、ここまでチューニングが必要はケースは多くありません。さらに「Crawl-Delay」に書いてある数値の解釈の仕方によって、ムラが発生する場合があります。

基本的には、行儀の悪いボットに対して決め打ちで指定するような使い方になるかと思います。

Sitemapによるインデックスの促進

私のブログは「はてなブログ」で運営してますが、robots.txtを見るとサイトマップがあります。

https://www.konosumi.net/robots.txt

Sitemap: https://www.konosumi.net/sitemap_index.xml

サイトマップには、サイト内にあるページの一覧を記載します。目的は検索インデックスの促進です。検索ボットがページを見つけやすくするお手伝いをすることで、検索エンジンからのサイト流入を増やす狙いがあります。

ただし実際のSEOでは、robots.txtのサイトマップに加えて、検索エンジンが用意している検索順位の改善ツールを併用することが多いです。

Google Search Consoleでも、サイトマップを登録することができます。

https://search.google.com/search-console/about

他のサイトのrobots.txtを見てみよう

robots.txtは公開されてますので、自由に見ることができます。興味がある方は、色々なサイトのrobots.txtを開いてみると参考になるかと思います。

www.geek.sc

さいごに

WEBエンジニアであれば、robots.txtについて知っておくことをオススメします。たとえば、サービスの管理画面は検索エンジンに登録する必要はありませんし、また登録されたくもありません。

検索エンジンに登録されたくないページがインデックスされてしまうトラブルを、未然に防ぐことができるからです。

言うなれば、robots.txtは検索ボットやクローラーに対して、指示出しを行なうためのツールです。ぜひともこの機会に、robots.txtの設定を見直してみませんか?