robots.txt は、Webサイトのルートに置くプレーンテキストのファイルで、サイトのどの部分を訪れてよいかをクローラーに伝えます。シンプルで強力ですが、間違えやすいファイルでもあります。たった1行で、検索エンジンがサイト全体をクロールできなくなることもあります。
このガイドでは、仕組み、安全な書き方、そして増え続ける AI クローラーへの対応を解説します。
robots.txt の置き場所
ファイルは各ホストのルートに置く必要があります。
https://example.com/robots.txt
このファイルは、まったく同じホストとプロトコルにしか適用されません。blog.example.com には専用のファイルが必要で、http:// でもコンテンツを配信しているならそちらにも必要です(そもそも HTTPS にリダイレクトすべきですが)。
robots.txt がない場合(サーバーが404を返す場合)、クローラーはすべてをクロールしてよいとみなします。
基本の書き方
User-agent: *
Disallow: /admin/
Disallow: /cart
Allow: /admin/public-help/
Sitemap: https://example.com/sitemap.xml
- User-agent は、ルールのグループが適用されるクローラーを指定します。
*はすべてのクローラーを意味します。 - Disallow は、クローラーが取得すべきでないパスの先頭部分を指定します。
- Allow は、禁止された範囲の中に例外を作ります。
- Sitemap は XMLサイトマップの完全なURLを示します。ファイル内のどこに書いてもよく、すべてのクローラーに適用されます。
# で始まる行はコメントです。
ワイルドカード
Google、Bing、主要なクローラーの多くは、2つの特殊文字に対応しています。
*は任意の文字列に一致します:Disallow: /*?sort=は?sort=を含むすべてのURLをブロックします$はURLの末尾を表します:Disallow: /*.pdf$は.pdfで終わるURLをブロックします
ルールの適用のされ方
robots.txt は現在、Google が長年採用してきた処理方法をもとにした正式なインターネット標準(2022年公開の RFC 9309)になっています。
- クローラーは、自分に最も具体的に一致する
User-agentのグループを使います。Googlebot はUser-agent: Googlebotのグループがあればそれに従い、*のグループは無視します。 - そのグループの中では、一致するルールのうち最も具体的な(最も長い)ものが優先されます。
- Allow と Disallow が同じくらい具体的な場合は、Allow が優先されます。
例:
User-agent: *
Disallow: /shop/
Allow: /shop/sale/
/shop/sale/shoes は許可され(Allow のルールのほうが長い)、/shop/new/shoes はブロックされます。
robots.txt を取得・検証し、任意の URL が Googlebot や AI ボットにブロックされていないかテストします。
robots.txt にできること・できないこと
制御するのはクロールであって、インデックスではありません。 禁止されたURLでも、ほかのページからリンクされていれば、通常は説明文なしで検索結果に表示されることがあります。ページを検索結果から外すには、クロールを許可したうえで、noindex の robots メタタグか X-Robots-Tag ヘッダーを使いましょう。
誰でも見られます。 robots.txt は誰でも読めます。非公開の領域を隠すために使ってはいけません。かえって場所を宣伝することになります。非公開のコンテンツは認証で保護しましょう。
従うかどうかは任意です。 信頼できるクローラーは従いますが、悪意のあるボットは無視します。
安全な例
すべて許可する(サイトマップも示す)
User-agent: *
Allow: /
Sitemap: https://example.com/sitemap.xml
WordPress
User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Disallow: /?s=
Disallow: /search/
Sitemap: https://example.com/wp-sitemap.xml
オンラインショップ
User-agent: *
Disallow: /cart
Disallow: /checkout
Disallow: /account
Disallow: /*?*sort=
Disallow: /*?*filter=
Sitemap: https://example.com/sitemap.xml
並べ替えや絞り込みのパラメーターをブロックすると、クローラーがほぼ重複した何千ものURLに時間を浪費するのを防げます。
テスト環境(すべてブロック)
User-agent: *
Disallow: /
これはテスト環境や開発環境だけで使いましょう。できればパスワードで保護するのがさらに安全です。公開時にこれを消し忘れるのは、サイトが検索から消えてしまう最もよくある原因の一つです。
サイトマップ、ブロックするフォルダ、AI クローラーの制御を含む robots.txt を作成します。
AIクローラーへの対応
AI 企業は複数の種類のクローラーを運用しており、それぞれ扱いを変える価値があります。
| 目的 | 例 | ブロックした場合の影響 |
|---|---|---|
| 学習 – モデルの学習用にコンテンツを収集 | GPTBot(OpenAI)、ClaudeBot(Anthropic)、Google-Extended(Google の Gemini 学習の制御)、CCBot(Common Crawl)、Applebot-Extended | 今後の学習にコンテンツが使われなくなります。検索での見え方には影響しません。 |
| AI検索 – AI検索で回答・引用するためにページを取得 | OAI-SearchBot、Claude-SearchBot、PerplexityBot | それらの AI 検索エンジンで、ページが情報源として表示されない可能性があります。 |
| ユーザーの依頼による取得 – 人がアシスタントにページを読むよう頼んだとき | ChatGPT-User、Claude-User、Perplexity-User | ユーザーが頼んでも、アシスタントがページを読めない可能性があります。 |
Google-Extended は独立したクローラーではなく制御用のトークンです。ブロックすると Gemini モデルの学習へのコンテンツ利用は止まりますが、Googlebot に依存する Google 検索や AI による概要には影響しません。
よく使われる折衷案は、AI 検索での露出は保ちながら学習だけをブロックする設定です。
User-agent: GPTBot
User-agent: ClaudeBot
User-agent: Google-Extended
User-agent: CCBot
Disallow: /
User-agent: *
Allow: /
クローラーの名前や目的は変わるため、各社のドキュメントを定期的に確認しましょう。
ChatGPT、Claude、Perplexity、Google AI があなたのページにアクセスし、読み取り、引用できるかを確認します。
よくある失敗
- テスト環境の
Disallow: /が残っている。 公開や移転の後は必ず robots.txt を確認しましょう。 - CSS と JavaScript をブロックしている。 Google はページのレンダリングにこれらを必要とします。ブロックすると、Googlebot にはページが壊れて見えることがあります。
- robots.txt でページを Google から消そうとする。 ブロックされたページの noindex は見えません。noindex を使いましょう。
- canonical やリダイレクトを検索エンジンに見せたいページをブロックしている。
- タイプミスや大文字小文字の違い。 パスは大文字小文字を区別します。
/Admin/と/admin/は別物です。 - 巨大なファイル。 Google が読むのは最初の500KiBだけです。
- robots.txt がエラーを返す。 robots.txt が5xxエラーを返すと、Google はサイトのクロールを一時的に停止することがあります。
変更をテストする
新しい robots.txt を公開する前に、重要なURL(トップページ、主要なカテゴリや商品ページ、CSS や JavaScript のファイル)をテストしましょう。Search Console の robots.txt レポートでは、Google が最後に取得したバージョンと、見つかった問題を確認できます。
robots.txt、noindex、パスワード保護の違い
この3つは別々の問題を解決するもので、混同はインデックスの問題のよくある原因です。
| 目的 | 正しい手段 | 理由 |
|---|---|---|
| 価値の低いURL(フィルター、サイト内検索)のクロール時間を節約 | robots.txt の Disallow | クローラーの取得そのものを止める |
| ページを検索結果から外す | noindex メタタグまたは X-Robots-Tag | クローラーがページを取得できないと指示が見えない |
| コンテンツを非公開にする | パスワードやログイン | アクセスを本当に防げるのは認証だけ |
| ページを Google からすぐに削除する | noindex と Search Console の「削除」ツール | noindex が反映されるまで、ツールで一時的に非表示にする |
パラメーターとファセットナビゲーションへの対応
ECサイトや掲載サイトでは、フィルターの組み合わせごとに次のようなURLが生まれがちです。
/shoes?colour=red
/shoes?colour=red&size=8
/shoes?colour=red&size=8&sort=price
これらのページが検索ユーザーに独自の価値を提供しないなら、並べ替えのように無限の組み合わせを生むパラメーターをブロックしましょう。
User-agent: *
Disallow: /*?*sort=
Disallow: /*?*sessionid=
ただし、上位表示させたいフィルターページまでブロックしないよう注意してください。たとえば、実際に検索需要のある「赤 ランニングシューズ」のページは、独自のコンテンツを持つ、クロール可能でインデックス可能なURLにすべきです。
他サイトの robots.txt を読む
競合サイトの robots.txt を見るのは参考になります。どのセクションをクローラーから遠ざけているか、サイトマップがどこにあるか、AI クローラーにどう対応しているかがわかります。ファイルは公開されているので、管理しているサイトの露出が急に落ちたときに最初に確認すべきものでもあります。
テストと監視
robots.txt の変更はリスクが高いので、コードと同じように扱いましょう。
- 編集前に、以前のバージョンのコピーを保存する
- 公開前に、重要なURL(トップページ、主要カテゴリと商品、CSS と JavaScript)を新しいルールでテストする
- 公開後、ファイルが HTML のエラーページではなく、ステータス200のプレーンテキストを返すことを確認する
- その後数日間、Search Console の robots.txt レポートと「ページのインデックス登録」レポートを監視する
CMS や SEO プラグインの中には robots.txt を動的に生成するものがあります。物理的な robots.txt ファイルをアップロードすると、通常は仮想ファイルより優先されます。実際に配信されているバージョンを編集しているか確認しましょう。
重要なポイント
- robots.txt が制御するのはクロールであって、インデックスではありません。検索結果から外すには noindex を使います。
- 一致するルールのうち最も具体的なものが優先され、同等なら Allow が Disallow に勝ちます。
- ページの表示に必要な CSS や JavaScript のファイルは、決してブロックしないでください。
- AI の学習用クローラーと AI 検索用クローラーを分けて考えましょう。学習をブロックしても検索には影響しません。
- 公開や移転の後は、Disallow: / の消し忘れがないか必ず robots.txt を確認しましょう。
- 変更は公開前に、重要なURLでテストしましょう。
よくある質問
robots.txt は必要ですか?
厳密には必要ありません。なければクローラーはすべてにアクセスします。ただ、robots.txt はサイトマップを示し、価値の低い領域からクローラーを遠ざけるための標準的な場所なので、ほとんどのサイトで用意すべきです。
Google は crawl-delay に対応していますか?
いいえ。Googlebot は Crawl-delay を無視します。Bing など一部のクローラーは従います。
変更が反映されるまでどのくらいかかりますか?
Google は通常、robots.txt を最大24時間キャッシュするため、変更の反映には1日ほどかかることがあります。
特定のページだけをブロックできますか?
できます(Disallow: /private-page)。ただし、これはクロールのブロックであってインデックスのブロックではありません。検索結果から外すことが目的なら noindex を使いましょう。
自分のサイトをチェック
80 以上の項目を無料で診断し、すべての問題の改善方法を確認しましょう。