rebuildfmの@kosamariさん回で、Quoraのrobots.txtについての話題がありました。
そんなにすごいのかと気になったので、調べてみることにしました。実際の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: サイト内のページ一覧です。検索ボットのインデックスの促進を手助けします
以下の「とある社会学屋の唯物論」様のページがとても参考になります。
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
アスタリスク(*)はワイルドカードで、正規表現のワイルドカードをイメージしてもらえると理解が進みます。
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」です。
ただし、ここまでチューニングが必要はケースは多くありません。さらに「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を開いてみると参考になるかと思います。
さいごに
WEBエンジニアであれば、robots.txtについて知っておくことをオススメします。たとえば、サービスの管理画面は検索エンジンに登録する必要はありませんし、また登録されたくもありません。
検索エンジンに登録されたくないページがインデックスされてしまうトラブルを、未然に防ぐことができるからです。
言うなれば、robots.txtは検索ボットやクローラーに対して、指示出しを行なうためのツールです。ぜひともこの機会に、robots.txtの設定を見直してみませんか?