← PC・IT用語集へ戻る

robots

robots.txt
web tool beginner
検索エンジンのクローラーに対して、サイトのどのページを巡回してよいか(あるいは拒否するか)を伝えるテキストファイル。
robots (robots.txt)

概要(サマリー)

robots(正式には robots.txt)とは、Webサイトのトップページがあるフォルダ(ルートディレクトリ)に置く、検索エンジンクローラー(自動ロボット)向けの「案内板」となるテキストファイルである。
お店の「関係者以外立入禁止」や「撮影禁止」の看板にたとえられる。クローラーに対して、「このフォルダの中は個人情報や管理画面が入っているから見にこないでね」「この部分はどんどん巡回して宣伝してね」と伝えることで、サイトのインデックスを適切に整理してもらい、余計なアクセスによるサーバー負荷を減らすことができる。

詳細解説

robots.txtとは何か

robots.txt は、インターネット標準のプロトコル(ロボット排除規約)に基づいたファイルである。
クローラーはWebサイトを巡回する際、一番最初にサイトのルート(例:https://example.com/robots.txt)にあるこのファイルを読み込み、そこに書かれた指示に従ってサイトの中身を巡回する。

robots.txtの基本的な書き方

robots.txt は非常にシンプルなテキストファイルである。記述される主な指示項目は以下の通りである。

  • User-agent: 指示を与えるクローラーの種類を指定する。* と書けば「すべてのクローラー」を指す。
  • Disallow: クロールを「禁止する」パス(フォルダやファイルの場所)を指定する。
  • Allow: クロールを「許可する」パスを指定する(Disallowの例外を作るときに使う)。
  • Sitemap: クローラー向けのサイトマップ(XMLファイル)のURLを提示して、サイトの構造を伝える。

具体的な記述のコード例

# すべてのクローラーに適用する指示
User-agent: *

# 管理画面(/admin/)と一時ファイル(/temp/)へのアクセスを禁止する
Disallow: /admin/
Disallow: /temp/

# 上記以外のページのクロールは許可(省略しても基本は許可されます)
Allow: /

# サイトマップの場所をクローラーに伝える
Sitemap: https://example.com/sitemap.xml

なぜrobots.txtが必要なのか

  1. クロール効率の最大化(クロールバジェットの節約):
    検索エンジンが一日にWebサイトを巡回できる限界量には限りがある。無駄なページ(管理画面、重複ページ、システム内の中間ファイルなど)の巡回を拒否することで、検索結果に載せたい重要なコンテンツを優先的にクロールしてもらえる。
  2. サーバー負荷の軽減:
    大規模なサイトやプログラム処理が重いページにクローラーが頻繁に来ると、一般のユーザーがサイトを開く速度が遅くなることがある。これを防ぐためにアクセス制限をかける。

robots.txtの限界と注意点

  • 強制力がない:
    robots.txt は「お願い」であり、悪質なクローラー(スパムやコピーサイト制作用のロボット)はこれを平気で無視して侵入してくる。
  • パスが公開されてしまう:
    robots.txt は誰でもブラウザから直接中身を見ることができる。そのため、Disallow: /secret-admin-folder-xyz/ などと書くと、逆に「ここに秘密の管理画面がある」とハッカーに教えてしまう結果になり危険である。重要な場所はパス名だけで隠そうとせず、パスワード認証(Basic認証)などで技術的に保護するべきである。

AIコーディングとの関係

Webサイト(特にWordPressなどのCMSや、独自のフレームワークを用いたサイト)を構築して公開する際、AIを使ってそのサイトに最適な robots.txt を自動生成させることができる。

  • 構成に合わせた自動生成指示:
    AIに対して、「Laravelで作ったWebアプリケーションの一般的な構成に合わせた、セキュリティ上適切でクロール効率の良い robots.txt を書いてください」や「WordPressサイト用の一般的な robots.txt の内容を教えて」と指示する。
    これにより、自作したり手動で調べたりしなくても、適切な除外ディレクトリが含まれたファイルを即座に作成できる。

WordPress向けにAIに作成させた robots.txt の例:

User-agent: *
# 管理画面のクロールを拒否
Disallow: /wp-admin/
# ただし管理画面内のJavaScriptやCSSの読み込みは許可(Google推奨)
Allow: /wp-admin/admin-ajax.php

# サイトマップの指定
Sitemap: https://example.com/wp-sitemap.xml

よくある勘違い

robots.txtで禁止すれば、検索結果(Google)から完全に消える?

消えないことがある。
robots.txtDisallow は、あくまでクローラーが「そのページを巡回して中身を読むこと」を禁止するだけである。もし他のWebサイトからそのページへ大量のリンクが貼られていた場合、Googleは中身を読まないまま「URLとページのタイトルだけ」を検索結果に登録してしまうことがある。
検索結果から完全にページを消去したい場合は、robots.txt で拒否するのではなく、HTMLヘッダーnoindex メタタグを設定し、クローラーにそのページを一度読み込ませて「登録しない」という指示を理解させる必要がある(両者を併用すると、クローラーがページにたどり着けず noindex タグを読めなくなるため、消去したい場合は robots.txt で Disallow にしてはならない)。

robots.txtは必ず作らないとエラーになる?

なくてもWebサイトは正常に動作するし、Googleなどの検索エンジンも通常通りインデックスしてくれる。
ただ、ファイルが存在しないとクローラーが巡回に来るたびに「404 Not Found(ファイルが見つかりません)」という余計なエラーログがサーバーに残ることになる。そのため、記述する内容が特にない場合でも、以下のような「拒否する場所は何もありません」という内容の空に近い robots.txt を設置しておくのが推奨される。

User-agent: *
Disallow:

robots.txtに書けばAIの学習用クローラーも止められる?

止められない場合が多い。
近年、OpenAIのGPTBotやAnthropicのClaudeBot、Common Crawlなど、AI企業のクローラーが大量にWebサイトを巡回するようになった。これらに対して robots.txtDisallow を設定することはできるが、善意のクローラーは指示に従う一方、悪質なボットやルールを無視する実装は止められない。また、Googleなどの検索エンジンがキャッシュしたページはAI学習に二次利用される場合もある。完全に防ぐには、利用規約や技術的なアクセス制限(IPブロック等)の併用が現実的である。

まとめ

  • robots.txt は、検索エンジンのクローラーに対して、サイトのどの部分を巡回すべきかを指示するテキストファイル。
  • サイトのルートディレクトリに配置され、クローラーが最初に読み込む。
  • クロール効率の向上や、無駄な通信によるサーバー負荷の軽減に役立つ。
  • 「お願い」に過ぎず強制力はないため、非公開の重要なデータはパスワード認証等で保護する必要がある。

情報ソース

より詳しくAIに聞いてみよう

  • WordPressの主要なフォルダ(wp-content, wp-includesなど)について、それぞれ robots.txt でクロールを禁止すべきかどうか、Googleの最新の推奨事項とあわせて教えてください。
  • robots.txtDisallow 設定と、HTML内の <meta name="robots" content="noindex">(noindexタグ)の使い分けについて、検索結果から非公開ページを消したい場合の正しい手順を含めて解説してください。
  • 独自のスクレイピングロボット(ボット)を開発する際、アクセス対象のサイトにある robots.txt をプログラムで読み込んで解析し、その指示に従うお行儀の良い実装方法を教えてください。
  • 特定のクローラー(例:AIの学習用ボットであるGPTBotなど)からのアクセスだけを拒否し、Googleなどの一般検索は許可する robots.txt の書き方を教えてください。
  • robots.txt に文法上の間違いがないかテスト・検証するためのツール(Google Search Consoleなど)の使い方について教えてください。