COLUMNコラム

クロール制御の中でも扱いに気を付けたいrobot.txtとは? 活用シーンや書き方、注意点を解説

ライティング


robot.txtとは検索エンジンのクローラーに指示を出すためのテキストファイルです。主にクロールしてほしくないページやコンテンツを指定し、検索結果に表示させないために使われます。

このようなクロール制御はメタタグであるnoindexでも可能です。一方で、roboto.txtとnoindexとでは、指定する対象や活用シーンが異なります。設置を間違うとサイトに大きな被害を及ぼしてしまう可能性があるため、扱いには注意が必要です。

この記事では、クロール制御の中でも扱いに気を付けたいrobot.txtについて解説します。活用シーンや書き方、注意点について取り上げますので、SEO対策でrobot.txtの使用を考えている方はぜひご参照ください。

robot.txtとは?

robots.txtとは、Webサイトのルートディレクトリに設置することで、検索エンジンのクローラを制御するテキストファイルです。ファイルの記述から、特定のページやディレクトリへのアクセスを許可、または禁止できます。(ただし、指定に強制力はなく、必ず守られるわけではないので注意が必要です)

ここでは、robot.txtを設定する目的やSEOにおける役割、noindexとの違いについて解説します。

robot.txtを設定する目的

robot.txtの設定には大きく2つの目的があります。

1.クロールのリソースを最適化する
検索エンジンのクロールにはリソースがあります。巡回に費やせる時間や計算処理能力に上限があり、これを超えてしまうと、すべてのページを十分にクロールできなくなる可能性があります。そうなると、重要なページのクロールが遅れたり、検索結果に表示されなかったりなどの悪影響が発生する恐れがあります。

robot.txtを活用すれば、読み込む必要のないページを指定し、クロールのリソースを節約できます。これにより、クロールが必要ないページにリソースを割り当てることができ、サイト全体が適切な評価を受けられるようになります。

2.特定のページやディレクトリをクロールさせないようにする
サイトの中には、一般ユーザーに見せたくないページもあります。たとえば、会員限定コンテンツや、まだ開発途中のコンテンツなどです。このようなページは、必要な情報を探している一般ユーザーにとって、邪魔でしかありません。検索結果に表示されるとユーザビリティを損ない、サイト評価を下げてしまう恐れがあります。

robot.txtを活用すれば、検索エンジンにクロールの不要なページやディレクトリを指定できます。これにより、ユーザーはより円滑な情報収集ができるようになります。ユーザービリティの改善により、サイト評価の向上も期待できるでしょう。

robot.txtはSEOにおいてクローラーを制御し、検索結果を最適化する目的で用いられます。

noindexとの違い

robot.txtと同様に、検索エンジンのクローラーを制御し、検索結果を最適化する目的で使用されるのが、メタタグであるnoindexです。

しかし、robot.txtとnoindexは似ているようで、制御する対象が異なります。

・robots.txt:クローラーの「クロール」を制御する
・noindex:クローラーの「インデックス」を制御する

クロールは、クローラーがWebページを巡回して情報を収集することです。

robots.txtでクロールを制御すると、指示内容から指定されたページやファイルが検索エンジンの巡回対象から除外できます。ただし、制御するのはクロールのみなので、インデックスは阻止できません。

インデックスは、クローラーが収集した情報をデータベースに整理・登録することです。

noindexでインデックスを制御すると、検索エンジンが指定したページが検索エンジンのデータに登録されず、検索結果に表示されなくなります。ただし、制御するのはインデックスなので、クロールは阻止できません。

robot.txtとnoindexは、指定対象を検索結果に表示させないために使われる、という共通点があります。しかし、制御する対象・範囲が異なります。両者の違いを把握し、状況に応じて使い分ける必要があります。

noindexとの使い分け

robots.txtは主にクロール効率を向上させるために使われることが多いツールです。ディレクトリ単位で設定できるため、サイト全体に効果を適用することもできます。指示内容を記述できるため、サイトマップの案内など、クロールを制限する以外の使い道もあります。

robots.txtを使う場面としては、次の通りです。

  • クロール効率の最適化
  • 表示させたくないページのクロール拒否
  • サイトマップの案内

一方で、noindexは表示させたくないページを除外するため除外するために使われるツールです。ページ単位で設定され、不利益なページがインデックスされるのを阻止できます。
しかし、クロール自体は防げないので、直接的にはクロール効率の改善に寄与しません。

noindexを使う場面としては、次の通りです。

  • リンク管理
  • 重複コンテンツの管理
  • ページ単位での検索除外

クロール効率の改善はrobots.txt、ページ単位での検索除外はnoindexで使い分けましょう。

robot.txtの活用シーン

robot.txtは具体的にどのように使われるのでしょうか? ここでは、robot.txtの活用シーンを4つ解説します。

ECサイトなどでのクロールバジェット最適化

1つ目は商品ページが豊富なECサイトでのクロールバジェット最適化です。

クロールバジェットとは、検索エンジンのリソースが限られていることを直感的に理解するための用語です。その名の通り、Googleが各サイトごとに割り当てたクロールの予算(バジェット)を意味します。この予算はGoogleが管理し、サイト側で増やすことができません。そのため、サイト運営者はクロール効率を改善して、割り当てられたクロールバジェットを有効活用する必要があります。

限られたクロールバジェットを有効活用するのに重要なのが、robots.txtの適切な設定です。例えば、ECサイトで商品ページの条件絞り込みによって、同一商品の色違いやバリエーションごとの類似ページが大量に生成される場合があります。このようなページは、robots.txtを使ってクロールを制御しないと、クロールバジェットを無駄に消費するだけでなく、重複コンテンツとして認識される危険があります。

ECサイトの無駄やペナルティリスクをなくし、クロールバジェットを最適化するには、robots.txtを適切に設定し、不要ページを読み込ませなくすることが不可欠です。

サイト運営者向けページの検索非表示

2つ目はテストページや管理用ページなどの検索非表示です。

サイト運営者向けのページが検索結果に表示されると、一般ユーザーに混乱を与えるだけでなく、悪意あるユーザーから標的にされかねません。不正アクセスなどセキュリティリスクが高まるため、robots.txtでクロールを防止する必要があります。

管理者用ページをrobots.txtでクロールを制御することで、セキュリティリスクを軽減し、検索エンジンにインデックスされるべきページにリソースを集中させることができます。これにより、セキュリティとクロール効率の両方を高めることが可能です。

ただし、robots.txtは強制できないので、指示を無視される可能性もあります。また、検索エンジンはクロールしなくても、他のリンクや情報源からURLをインデックスすることもあるので注意です。より完全にセキュリティ対策を目指す場合は、認証パスワードやアクセス制限を併用しましょう。

検索エンジン用のXMLサイトマップの記載

3つ目は、robots.txtによるXMLサイトマップの提示です。

XMLサイトマップは検索エンジン向けに作られた地図で、サイト内URLや最終更新日、更新頻度などの情報が記載されています。検索エンジンは、これらの情報を基に、サイトをクロールします。XMLサイトマップの提示は、クロール効率を高め、検索結果への反映を早める効果が期待できます。

XMLサイトマップの提示はGoogleサーチコンソールでも可能ですが、このツールはGoogle専用です。robots.txtなら、どの検索エンジンにも対応でき、手軽に情報を管理することができます。

noindexが適用できない画像・動画・音声ファイルのインデックス拒否

最後は、noindexが適用できないファイルのインデックス拒否です。

画像・動画・音声などは、ファイルがタグ設定できず、noindexが適用できません。そのため、インデックスを拒否するにはrobot.txtでクロールを制限し、間接的にインデックスをさせないようにする必要があります。

ただし、この場合はデータに登録される前、つまり、構成段階でrobot.txtを設置しなくてはなりません。すでにインデックスされしまったデータに関しては適用されないので注意ましょう。この点は、インデックスされた後でも検索結果からの除外が期待できるnoindexとは異なります。

robot.txt作成の基本となる4つの設定 

robot.txtはどのように作成するのでしょうか。robot.txtには基本となる4つの記述があります。

  • User-Agent
  • Disallow
  • Allow
  • Sitemap

ここでは、各記述の概要や使用例について紹介します。

User-Agent

User-Agentは、検索エンジンのクローラーを指定する記述です。

この項目を指定することで、たとえば、

「Googlebotは全てのページをクロールすることを許可する」
「Bingbotは指定したディレクトリ以下のコンテンツのみクロールを許可する」

といったように、各クローラーごとで異なるルールを適用させることができます。
なお、すべてのクローラに一括で指示を出す場合は「User-agent: *」と記載します。

User-agentの記入例は次の通りです。

・Googleのクローラーのみを対象とする場合
User-agent : Googlebot 

・Bingのクローラのみ対象とする場合
User-agent: bingbot

・全クローラを対象とする場合
User-agent : *  

コードの記述例は次の通りです。

User-agent: Googlebot
Disallow:

User-agent: Bingbot
Disallow: /
Allow: /example_directory/

後述しますが、Disallowは「アクセス拒否」、Allowは「アクセス許可」を意味します。
この記述により

「Googlebotには全てのページをクロールすることを許可する」
「Bingbotにはexample_directory(指定したディレクトリ)以下のコンテンツのみクロールを許可する」

といったように、各クローラーごとに異なる指示を与えることができます。

Disallow

Disallowはアクセスを拒否する対象を指定する記述です。

検索エンジンのクローラーに対して、特定のページやディレクトリへのアクセスを禁止するという指示を与えます。また、Disallowを空白にすると「アクセスを拒否する対象がない=すべてにアクセス可能」という意図になります。

Disallowの記入例は次の通りです。

・サイト全体のアクセスを禁止する場合
Disallow: /

・ディレクトリ単位でアクセスを禁止する場合
Disallow: /ディレクトリのパス/
例:Disallow: /example_directory/

・ページ単位でアクセスを禁止する場合
Disallow: /ページのパス
例:Disallow: /example_directory/sample.html

・Webサイト全体のアクセスを許可する場合
Disallow:(何も書かず空白にする)

Disallowは限定会員専用ページや管理用ページ、重複コンテンツなど、クロールして欲しくないページやディレクトリを指定する際に使用されます。

Allow

Allowはアクセスを許可する対象を指定する記述です。

単体で使われることはなく、すでにDisallowでクロールの制限をかけているディレクトリ・特定ページにアクセスを許可するために使います。

たとえば、/example_directory/ 以下をすべて禁止する一方で、その中の特定のファイル(例:/example_directory/sample.html)だけはクロールを許可したい場合は次のような記述になるでしょう

User-agent: *
Disallow:/example_directory/
Allow:/example_directory/sample.html

Allowは、Disallowでブロックしているディレクトリ内の一部のページだけ検索表示させたい場合などに使われます。

Sitemap

Sitemapは、XMLサイトマップのファイル位置を通知するための記述です。

robots.txtでは、URL形式の絶対パスを指定する必要があります。絶対パスとは、ルートディレクトリを基準にしたファイルやフォルダのパスです。どのページからでも同じパスになるという特徴があります。

XMLサイトマップは先述した通り、検索エンジン向けに作られた地図です。記載しておけば、クロール効率を高め、検索結果への反映を早める効果が期待できます。

XMLサイトマップが複数ある場合は、その数だけrobots.txtにSitemapを記述します。たとえ
ば以下の通りです。

Sitemap: https://www.example.com/sitemap.xml
Sitemap: https://www.example.com/sitemap2.xml

robot.txtの注意点

robot.txtを使いこなすことができれば、検索エンジンやファイル場所を指定して、クロールを細かく制御できます。

その一方で、robot.txtは取り扱いを間違えると、サイトに甚大な被害を与えてしまいます。ここではrobot.txtを扱う上での注意点について紹介します。

記述ミスによるクロール拒否

robot.txtの記述ミスで最も怖いのが、誤ってクロール拒否の指示を出してしまうことです。全サイトクロール拒否は、サイトに蓄積されてきた評価を大きく損ねる可能性があります。そして、このような事態は凡ミスでも起こり得ます。

全サイトのクロールを拒否する指示である「Disallow: /」 は非常に強力で、滅多に使うことはありません。しかし、文自体の使用頻度は高いです。

たとえば、ディレクトリを指定してクロールを拒否する記述も、途中までは「Disallow: /」を使います。ディレクトリの指定を書き忘れてしまえば、それだけで全サイトのクロールを拒否する記述になってしまいます。

robots.txt 完成時は、テキスト内で「Disallow: /」で検索をかけて、誤って全サイトクロール拒否になっている箇所がないか確認しましょう。

検索結果の非表示にする目的で使うには不完全

robot.txtは指定したページを検索結果に表示させない目的でよく使われます。

しかし、クロール拒否は、あくまで検索エンジンへの推奨です。絶対的な命令ではないので、場合によってはクローラに無視されることもあります。

また、robot.txtはインデックスを防げません。クロールを防げても、被リンクを経由してインデックスされてしまうこともあります。

robot.txtは、検索結果にページを表示させないための防止策の1つです。しかし、完全ではないので注意しましょう。

robot.txtとnoindexの併用 

robot.txtとnoindexの併用は、一見するとクロールとインデックスを同時に防げるハイブリットな対策に思えるかもしれません。

しかし、noindexは検索エンジンがページをクロールし、タグを検出することで機能します。robots.txtでクロール自体を禁止してしまうと、タグが検出できなくなります。結果、noindexが機能せず、対象ページのインデックスを防止できなくなります。

このことはGoogle公式でも触れられており、Googleセントラルには次のような記述があります。

重要: noindex ディレクティブを有効にするためには、robots.txt ファイルでページやリソースをブロックせず、クローラがページにアクセスできるようにする必要があります。robots.txt ファイルでページがブロックされている場合、またはクローラがページにアクセスできない場合、クローラは noindex ルールを認識しません。そのため、たとえばそのページが他のページからリンクされていれば、検索結果に引き続き表示される可能性があります。

Googleセントラル参照
https://developers.google.com/search/docs/crawling-indexing/block-indexing?hl=ja

robots.txtとnoindexの併用は、必ずしも悪い結果をもたらすわけではありません。しかし、検索エンジンによる意図しないインデックス防止が発生する可能性があるため、推奨はされていません。併用する際はページが意図した通りに動作するか、慎重に確認しましょう。

反映されるまでの目安は1~2週間

robot.txtを作成・変更しても、その内容がすぐに検索エンジンに反映されるわけではありません。反映されるまでにかかる時間は、Googleでおよそ1~2週間ほどです。ただし、これはあくまで目安です。時間にばらつきがあるため、早ければ数時間、遅ければ数か月かかるケースもあります。

反映までに時間がかかり、その時間にもばらつきがある、という前提でrobot.txtを活用しましょう。

robots.txtの動作を確認する方法

robot.txtは作成に不備があるとクロールを制御できないだけでなく、サイトに甚大な被害を与える可能性があります。それだけに、ツールを使った動作確認は必須です。

最後に、Googleサーチコンソールの機能「robots.txtテスター」での動作確認を解説します。このツールでは、robots.txtファイルの構文が問題なく機能しているかどうか、つまり指定したURLへのクロール制御が正しく行われているかを確認できます。

次の手順で動作確認を行いましょう

①Googleサーチコンソール内から「robots.txtテスター」にアクセス
②画面下部の入力欄に動作テストをしたいURLのドメイン以下の部分を入力
③テストをクリック

入力したクロールがブロック済みなら赤字で「ブロック済み」、ブロックされていないなら緑字で「許可済み」と表示されます。

まとめ

robots.txtは、検索エンジンのクロールを制御する上で強力なツールです。適切に設定できれば、重要なページを優先的にクロールさせ、サイト全体の評価を高めることができます。

一方で、robots.txtはディレクトリに設置するため、他のクロール制御より効果範囲が広大です。設定を誤れば、意図せず重要ページを検索エンジンの検索結果から除外してしまう可能性があります。それだけに扱いは慎重を要します。とくに、効果がよく似ているnoindexとの使い分けには注意しましょう。

robots.txtは、SEO対策に取り組んでいる人にとって欠かせないツールの一つです。しっかり特徴を把握し、使いこなせるようにしましょう。