サイト運営を行う上で、検索結果への表示を避けたいページに対するクロールを制御することは重要です。そこで、クローラーの動きを制御するのに役立つのが「robots.txt」です。
しかし、robots.txtを使ってクロールを制御すべきページと、そうではないページが存在します。そのためrobots.txtは、何を目的としてクロールを制御するのかによって使い分ける必要があります。
今回はrobots.txtの書き方と、どのような場合に使うのかについて詳しくご説明します。
目次
クロールを制御するrobots.txt
robots.txtは実際にどのような効果があり、どう使用すれば良いのでしょうか。よく耳にする「クロールバジェット」にも触れながら、robots.txtについてご説明します。
robots.txtとは?
robots.txtは、クロールを最適化するために用いられるファイルのことです。クローラーによる巡回や、検索エンジンによるインデックスを避けたいページを設定することで、検索結果に表示したくないページへのクロールを制御します。
クロールの最適化に関連する言葉として、「クロールバジェット」を耳にしたことがある方もいるのではないでしょうか。
クロールバジェットとは、一般的にはGooglebotが一定の期間でどれくらいクロールするかの割り当てを指して使われる言葉です。
しかし、Googleはクロールバジェットについて以下のように述べています。
外部的に「クロール バジェット」と言われているものを一言で説明できるような言葉はGoogle内部にはありません
※出典:Googlebot のクロール バジェットとは? Googleウェブマスター向け公式ブログ
Googlebotがクロールの優先順位を決める上での判断要素は、「クロール速度の制限」と「クロールの必要性」です。そうしたことから、Googleでは一般的にクロールバジェットと呼ばれる言葉について、以下のように定義しています。
クロールの必要性があり、かつGooglebotがクロール可能なURLの数
※出典:Googlebot のクロール バジェットとは? Googleウェブマスター向け公式ブログ
数千以下のURLしか持たないような一般のサイトでは、クロールバジェットを重要視する必要はありません。クロールバジェットが直接Googleのランキング指標とはされていないからです。
ただし、インデックスやクロールが不要なページがある場合は、それをrobots.txtに対象ディレクトリをDisallow指定し、新しいコンテンツなど巡回が必要なページにGooglebotのリソースを割いたほうが良いでしょう。
また、大型ECサイトなどは注意が必要です。ページを自動生成するようなサイトでは、クロールする対象のページやタイミング、割り当てるリソースの量などに優先順位をつける必要があります。
robots.txtが推奨されるページやコンテンツの例
ユーザーログインページ
サイト運営者が管理画面にログインするためのページや、会員限定サイトなどのログインページのことです。読み手側にとって有益な情報が載っていないため、クロールされる必要がありません。
会員向けのコンテンツ
基本的には第三者からのアクセスを制限しているため、検索結果に表示されてユーザーがクリックしたとしても、すぐに離脱してしまいます。
ECサイトの決済プロセスページ
ECサイトで商品を購入する場合、決済画面が自動生成されます。しかし、自動生成されたページは検索結果に表示される必要がありません。
広告リンク先のページ
Googleは単なる広告ページを良なコンテンツとして評価していません。そのため、広告ページがインデックスされると、サイトの検索順位が低下する可能性があります。
robots.txtの書き方
ここでは、robots.txtがどのような要素で成り立ち、どうやって書くのかについてご紹介します。
robots.txtを構成する4つの要素
robots.txtを記載する際の基本的な形は、以下の4つの要素で構成されます。
1 2 3 4 5 |
User-agent: Disallow: Allow: Sitemap: |
<解説>
- 「User-agent」で指定したクローラーについて、「Disallow」「Allow」でルールを設定します。
- 「Sitemap」の前は一行空けます。
- 「Sitemap」はオプショナルではありますが、robots.txtに記載するのが望ましいです。
User-agent
User-agentでは、制御したいクローラーの種類を指定できます。クローラーはクロールする対象によって分かれており、「モバイルウェブ Android 用 AdsBot」「モバイルウェブ用 AdsBot」「AdsBot」「画像用 Googlebot」「ニュース用 Googlebot」「動画用 Googlebot」などがあります。
例えば、動画のクロールを制御する場合「Googlebot-Video(動画用 Googlebot)」を「User-agent: Googlebot-Video」という形で入力します。
「*」を入力すれば、すべてのクローラーに対して指示が可能です。
Disallow
Disallowでは、クローラーのアクセスをブロックできます。指定したクローラーにクロールされないように設定が可能です。
6種類のブロック方法
目的 | 方法 | 例 |
サイト全体をブロック | 「/」を入れる | Disallow: / |
ディレクトリサイト全体をブロック | ディレクトリ名の後に「/」を入れる | Disallow: sample-directory/ |
特定の画像のみのクロールをブロック | 右記の記述を追加 | User-agent: Googlebot-Image Disallow: /images/dogs.jpg |
gifファイルなど、特定のファイルのクロールをブロック | 右記のように記述 | User-agent: Googlebot Disallow: /*.gif$ |
誤ったURLのクロールをブロックすることで、検索結果に表示されるURLを統一 | 右記のように記述 | User-agent: Googlebot Disallow: /*.xls$ (URL末尾が「xls.」のページをすべてクロールブロックできる) |
例外:特定のページをクロールしてほしい場合(Allow)
特定のページをだけをクロールしてほしい場合は「Allow:」を記述します。
例えば、親サイトページ「http://example.com」はブロックし、ディレクトリページ「http://example.com/sample」はクローラーさせたい場合、
1 2 |
Disallow: /example.com Allow:/ example.com/sample |
と入力します。
なお、「Disallow」よりも「Allow」が優先されます。
robots.txtを設定する上での5つの注意点
robots.txtを設定する上で注意すべき点が5つあります。
ただ記載するだけでなく、しっかりと注意点を理解した上で活用しましょう。
ルートディレクトリに記載する
ルートディレクトリ以外にrobots.txtを記載しても、効果を発揮しません。
robots.txtを記載したのに反映されていないという方は、まずルートディレクトリにしっかりと記載できているかを確認しましょう。
すぐには反映されない
robots.txtを設定しても、すぐには反映されません。
クローラーが巡回して初めて反映されますので、クローラーの巡回タイミングを考慮した上で記載しましょう。
ブロックするときだけでなく、ブロックを解除する際も同様です。
「noindex」とrobots.txtの使い分ける
インデックスを排除したいページにはnoindexのみを付与しましょう。ただし、noindexを付与しただけではインデックス登録から該当ページは消えません。noindexを付与した後、再度クローラーがそのページを巡回してnoindexを認識してから、インデックスされたデータが削除される、という流れがあるからです。
また、仮に、インデックスされているページを検索結果に表示させないために、メタタグ設定でnoindexを設定し、robots.txtでもクロールをブロックしたとしましょう。その場合は、内部・外部リンクからクローラーが回ってくるまでインデックスが変わらないため、いつまでも検索結果から消えない可能性があります。
robots.txtは絶対的なものではない
robots.txtでクロールをブロックするように設定したとしても、指示を無視してクロールされることがあります。
Googlebotなどの検索エンジンは基本的にrobots.txtを遵守します。しかし、ほかのWebスクレイパーやスパイダーはrobots.txtのルールを無視してサイトを回遊する可能性があるためです。
絶対に見られたくないページの場合は、パスワードを設定してユーザーをブロックするようにしましょう。
正しい用法でクロールを制御し、最適なサイト運営を
robots.txtを使ったクロールの制御は、SEOの改善にもつながるため、サイト運営に携わる方は、書き方や注意点を覚えておいたほうが良いでしょう。しかし、robots.txtはあくまで、クロールを制御するものであり、検索エンジンのインデックスを排除するための方法ではないので注意が必要です。
正しくrobots.txtを利用してクロール制御を行い、最適なサイト運営を目指しましょう。