Robots.txt:仕組み、記述例、テスト方法
robots.txtはクローラーが取得できるURLを決めるファイルで、1行の誤りがサイト全体を隠してしまうこともあります。GoogleとRFC 9309がファイルをどう解釈するか、ステータスコードごとの挙動、コピーして使える例、robots.txtとnoindexの落とし穴、robots.txtチェッカーが報告する問題の直し方を解説します。
Searvia · 2026/10/24 · 読了目安:4分

要点: robots.txtは
/robots.txtに置くプレーンテキストのファイルで、クローラーが取得してよいURLを伝えます。ルールはUser-agentごとにグループ化され、クローラーは自分を指名したグループを使い、該当がなければ*のグループを使います。そして、一致するパスが最も長いAllowまたはDisallowが優先されます。制御するのはクロールであってインデックスではありません。Googleのインデックスから除外したい場合はnoindexを使います。404は「すべてクロールしてよい」、5xxは「停止」を意味します。被害の多くは、ステージングサイトから残ってしまったDisallow: /という1行が原因です。
robots.txtは多くのサイトで最も短いファイルですが、影響範囲は最も大きいファイルです。User-agent: * の下にある Disallow: / が1行あるだけで、Google、Bing、Apple、そしてあらゆるAI検索クローラーからサイト全体が見えなくなります。スラッシュの付け忘れ、誤ったグループに書いたルール、ファイル自体のサーバーエラーでも同様の被害が出かねませんが、表から見えるサイトには何の異常も現れません。
このガイドでは、RFC 9309とGoogleの仕様に基づくクローラーのファイルの読み方、コピーして使える例、無料のrobots.txtチェッカーによるファイルのテスト方法、そして報告されるすべての問題の修正方法を解説します。
robots.txtにできること、できないこと
Googleの概要ドキュメントははっきり述べています。robots.txtファイルは「サイト上でクローラーがアクセスできるURLを検索エンジンのクローラーに伝える」ものであり、主な役割はクローラーのトラフィック管理です。これは「ウェブページをGoogleに表示させないための仕組みではありません」。disallowされたURLでも、「ウェブ上の他の場所からリンクされていれば」インデックスされる可能性があり、その場合は通常、説明文なしで表示されます。
同じ情報源から、さらに3つの制限があります。
- ロックではなく、あくまでリクエストです。 RFC 9309は、このルールが「アクセス認可の一形態ではない」としています。良識あるクローラーは従いますが、従わないものもあります。非公開のコンテンツは認証で保護してください。
- ホスト、プロトコル、ポートごとに適用されます。
https://www.example.com/robots.txtはhttps://shop.example.comやhttp://www.example.comには適用されません。それぞれに専用のファイルが必要で、Googleはサブディレクトリ内のrobots.txtを探しません。 - クローラーごとに構文の解釈が異なります。 標準のフィールドとシンプルなパターンだけを使えば、主要なクローラーはどれも同じように読み取ります。
構文
robots.txtはグループの一覧です。各グループは1行以上の User-agent で始まり、その後に Allow と Disallow のルールが続きます。Sitemap 行はどこにでも置けます。
# Comments start with a hash
User-agent: Googlebot
User-agent: Bingbot
Disallow: /cart/
Disallow: /search
Allow: /search/help
User-agent: *
Disallow: /admin/
Sitemap: https://www.example.com/sitemap.xml
| フィールド | Googleの対応 | 役割 |
|---|---|---|
user-agent | 対応 | グループの適用対象クローラーを指定。* はそれ以外すべて |
disallow | 対応 | クローラーが取得すべきでないパスのプレフィックス。空の場合は何も禁止しない |
allow | 対応 | クローラーが取得してよいパスのプレフィックス。例外の指定に使う |
sitemap | 対応 | サイトマップの絶対URL。特定のグループには紐づかない |
crawl-delay | 非対応 | Googleは無視。AnthropicなどほかのクローラーAIは読み取る |
noindex などその他 | 非対応 | 無視される |
フィールド名は大文字と小文字を区別しませんが、パスは区別します。そのため Disallow: /Admin/ は /admin/ をブロックしません。特殊文字は2つ使えます。* は任意の文字列に一致し、$ はURLの末尾を表します。Disallow: /*.pdf$ は .pdf で終わるすべてのURLをブロックし、Disallow: /*? はクエリ文字列を含むすべてのURLをブロックします。
クローラーに適用されるグループ
最も間違えやすいルールです。Googleによれば「特定のクローラーに有効なグループは1つだけ」で、最も具体的に一致するユーザーエージェントのグループが選ばれます。同じエージェントを指名するグループどうしは統合されますが、指名されたグループが * のグループと結合されることはありません。RFC 9309も同様で、クローラーはプロダクトトークンを大文字小文字を区別せずに照合し、一致するグループを結合し、「一致するグループが存在しない場合」にのみ * に戻ります。
つまり上のファイルでは、Googlebotは自分のグループだけに従います。* のグループは適用されないため、/admin/ をクロールできます。全員に適用したいルールは、指名した各グループに繰り返し記述してください。
クローラー固有の注意点が2つあります。Googleの Googlebot トークンは検索、Discover、画像、動画、ニュースを対象とし、Googlebot-Image のようなより限定的なトークンで1つのプロダクトだけを制御できます(Googleの一般的なクローラー)。またAppleは、robots.txtにApplebotの記載がなくGooglebotの記載がある場合、ApplebotはGooglebotの指示に従うとしています(About Applebot)。
どのルールが優先されるか
グループ内では、最も具体的なルール、つまり一致するパスが最も長いルールが適用されます。AllowとDisallowが同じ長さで一致した場合は、制限の緩いAllowが優先されます。ファイル内の順序は関係ありません。
| ルール | URL | 結果 |
|---|---|---|
Disallow: /shop/ と Allow: /shop/sale/ | /shop/sale/boots | 許可(一致が長い) |
Disallow: / と Allow: /$ | / | 許可。ほかのURLはすべてブロック |
Disallow: /*.php と Allow: /index.php | /index.php | 許可 |
Disallow: /page | /pages/about | ブロック(プレフィックス一致) |
Disallow:(空) | すべて | 許可 |
ステータスコードですべてが変わる
クローラーは何よりも先に /robots.txt をリクエストするため、そのHTTPステータスは内容と同じくらい重要です。Googleの仕様とRFC 9309によると、次のとおりです。
| robots.txtの応答 | Googleの挙動 | RFC 9309 |
|---|---|---|
| 2xx | 返されたファイルをそのまま処理 | ルールを使用 |
| 3xx | 最低5ホップまで追跡し、その後は404として扱う。meta refreshやJavaScriptは追跡しない | 最低5回のリダイレクトを追跡 |
| 429を除く4xx | robots.txtが存在しないものとして扱う。制限なし | あらゆるリソースにアクセスしてよい |
| 429、5xx、タイムアウト | 再試行しながら12時間クロールを停止し、その後は最後に取得できた正常なコピーを最大30日間使用。なければ制限なしとみなす | 完全なdisallowとみなさなければならない |
実務上の結論として、robots.txtが404でも害はありませんが、ファイルに500や503を返すファイアウォールやサーバーがあると、サイト全体のクロールが止まる可能性があります。またGoogleは、クロール頻度を制限するために401や403を使わないよう注意しています。
さらに2つの制限があります。Googleはファイルを最大24時間キャッシュするため、変更はすぐには反映されません。また500 KiBを超える内容は無視します。ファイルはUTF-8である必要があります。
robots.txtとnoindexの違い
Googleのnoindexドキュメントは落とし穴を説明しています。robots.txtでページをブロックすると、クローラーはそのページの noindex ルールを見ることができず、ページが検索結果に表示され続けることがあります。目的に応じて適切な手段が変わります。
| 目的 | 使うもの |
|---|---|
| ページを検索結果に出さない | noindex メタタグまたは X-Robots-Tag: noindex ヘッダー(クロールは許可したまま) |
| 無限に生成されるフィルターやサイト内検索へのクローラーの無駄なリクエストを止める | robots.txtの Disallow |
| 非公開コンテンツを非公開に保つ | 認証。robots.txtは公開されており、誰でも読める |
| すでにインデックスされたページを削除する | noindex または404/410にして、Googleに再クロールさせる |
コピーして使えるrobots.txtの例
すべて許可してサイトマップを記載する(小規模サイトの多くに適したファイル):
User-agent: *
Disallow:
Sitemap: https://www.example.com/sitemap.xml
典型的なオンラインショップ:
User-agent: *
Disallow: /cart/
Disallow: /checkout/
Disallow: /account/
Disallow: /*?sort=
Disallow: /*?filter=
Sitemap: https://www.example.com/sitemap.xml
ステージングサイト(ステージングサイトにのみ使い、パスワード保護も併用してください):
User-agent: *
Disallow: /
AI検索は許可し、AI学習はブロックする:
User-agent: OAI-SearchBot
User-agent: Claude-SearchBot
User-agent: PerplexityBot
Allow: /
User-agent: GPTBot
User-agent: ClaudeBot
User-agent: Google-Extended
User-agent: CCBot
Disallow: /
User-agent: *
Disallow: /admin/
Sitemap: https://www.example.com/sitemap.xml
Google-Extended をブロックしてもGoogle検索には影響しません。Googleは、これが「サイトのGoogle検索への掲載には影響せず、ランキングシグナルとしても使われない」としています。AI概要とAIモードはGooglebotで動作します(AI機能とウェブサイト)。OpenAIは、OAI-SearchBotをオプトアウトするとChatGPTの検索回答に表示されなくなるとしているため、そうしたい場合以外はブロックしないでください(OpenAI crawlers)。すべてのAIトークンについてはAIクローラーガイドで解説しています。
ページの表示に必要なCSS、JavaScript、画像はブロックしないでください。Googleは、ページが「損失によって大きな影響を受けない」のであれば重要でないリソースをブロックしてもよいとしていますが、コンテンツやレイアウトを担うファイルをブロックすると、Googleがページを理解できなくなります。
Searviaのrobots.txtチェッカーの仕組み
robots.txtチェッカーは、ウェブサイトSEOチェッカーと同じエンジンで動作します。ドメインまたはページのアドレスを入力すると、そのページ(ドメインだけを入力した場合はホームページ)と周辺のサイトファイルを読み込み、約20秒で38項目のチェックを実行し、このツールの対象である4つのチェックを最初に表示します。それぞれの内容は次のとおりです。
robots.txt(優先度:中)。 チェッカーはページを最終的なアドレスまで追跡し、同じホストの /robots.txt をリダイレクトを追いながらリクエストします。ステータスコードは上の表と同じ基準で判断します。404などの4xxはファイルなし、5xx、429、応答なしはファイルに到達できない状態、HTMLページを返す200は有効なrobots.txtではない、という扱いです。ファイルはRFC 9309の記述どおりに解析します。対象は、User-agent グループ(複数行で1組のルールを共有可)、重複グループの統合、* へのフォールバック、* と $ のワイルドカードを使った Allow と Disallow、コメント、一致が最長のルールを優先し同長ならAllowを優先する判定、そして Sitemap 行です。そのうえで、Googlebotがホームページのパス / を取得できるか、内部ページを入力した場合はそのページのパスも取得できるかを確認します。
- 合格: ファイルが存在し、Googlebotが
/と入力したページをクロールできる。 - 不合格: ファイルがGooglebotによる
/(実質的にはサイト全体)または入力したページの取得をブロックしている、もしくはrobots.txtに到達できない。 - 警告: ファイルが見つからなかった(4xx)、またはファイルがHTMLページである。
AIクローラーのアクセス(優先度:高)。 同じパーサーを10個のクローラートークンに対して実行します。OAI-SearchBot、ChatGPT-User、PerplexityBot、Claude-SearchBot、Claude-User、Googlebot、Bingbot(AI検索として分類)と、GPTBot、ClaudeBot、CCBot(AI学習として分類)です。さらに、クローラーではないためAI学習のオプトアウトトークンとして分類されるGoogle-ExtendedとApplebot-Extendedも対象です。またGPTBotを名乗るリクエストを1回送り、ファイアウォールが401、403、429、503で拒否しないかも確認します。このリクエストはOpenAIのアドレスから送られるものではないため、拒否されても証拠ではなく警告として扱います。検索トークンのいずれかがブロックされている場合、またはrobots.txtに到達できない場合は不合格となります。ブロックされた学習トークンは一覧表示されますが、サイト側の選択として扱われます。
XMLサイトマップ(優先度:中)。 robots.txt内のすべての Sitemap: 行を試し、続いて /sitemap.xml と /sitemap_index.xml を試します(最大4アドレス)。<urlset> または <sitemapindex> を含む200を最初に返したものを合格とし、URL数を表示します。
インデックス許可(優先度:高)。 ページ内の robots または googlebot メタタグと、X-Robots-Tag レスポンスヘッダーに noindex がないかを調べます。どちらか一方でもあれば、robots.txtの内容にかかわらずページが検索結果に出なくなるため、不合格となります。
テストしないもの
- 1回の実行につき1ページ。 Googlebotのテスト対象は
/と入力したページです。Disallow: /blog/のようなルールは、/blog/配下のページを入力した場合にのみ指摘されます。セクション単位のルールはファイルを直接読むか、Search ConsoleのURL検査で個別のURLをテストしてください。 - ほかのホストのルール。 ページの最終到達先のホストのrobots.txtだけを読み込みます。
結果の読み方
| メッセージ | 意味 | 優先度 |
|---|---|---|
| robots.txt is present and lets search engines in. | ファイルが存在し、Googlebotが / をクロールできる | なし |
| robots.txt blocks Google from the whole site. | Googlebotのグループまたは * が / をdisallowしている | 今日中に修正 |
| robots.txt blocks Google from this page. | Googlebotのグループまたは * が入力したページをdisallowしている | 今日中に修正 |
| robots.txt answers with status N. / robots.txt could not be reached. | 5xxまたは429、あるいは応答なし。Googleがクロールを一時停止する | 今日中に修正 |
| robots.txt returns an HTML page instead of crawl rules. | /robots.txt でステータス200のウェブページが返されている | 今週中 |
| No robots.txt file was found, so crawlers may visit every page. | 404またはその他の4xx | 任意 |
| robots.txt blocks N AI search crawlers. | 検索用またはユーザー取得用のAIトークンがページを読めない | AIによる引用を望むなら修正 |
| No XML sitemap was found in robots.txt or at /sitemap.xml. | 通常の場所にサイトマップがない | 今週中 |
| A noindex meta tag blocks indexing. / An X-Robots-Tag header blocks indexing. | ページが検索から除外するよう求めている | 今日中に修正 |
レポートでは、38項目すべてについて優先度で重み付け(高10、中5、低2、警告は半分)したA+からFの評価、「最初に修正すべき項目」リスト、共有用リンクが提供されます。各チェックについて、監査済みサイトのうち合格した割合も表示されます。
チェッカーが報告するすべての問題の直し方
robots.txtがGoogleにサイト全体をブロックしている
- 公開中のファイルを開き、Googlebotに適用されるグループを探します。
User-agent: Googlebotのグループがあればそれ、なければUser-agent: *です。 - そのグループ内の
Disallow: /やDisallow: /*のようなパターンを探します。削除するか、本来ブロックしたかった特定のパスに置き換えます。 - 編集する前に、ファイルの出どころを突き止めます。静的ファイル、CMSの設定、SEOプラグイン、CDNのルール、デプロイスクリプトなどが考えられます。Shopifyでは、テーマの
robots.txt.liquidテンプレートを編集します。 - プライベートウィンドウで
https://yourdomain.com/robots.txtを開いて変更が反映されていることを確認し、robots.txtチェッカーをもう一度実行します。 - Search Consoleでrobots.txtレポートを開き、ファイルに対して再クロールをリクエストを選びます。そうしない場合、Googleは最大24時間キャッシュを保持します。
- その後数日間、ページのインデックス登録レポートで「robots.txtによってブロックされました」の件数が減っていくことを確認します。
robots.txtが存在しない、到達できない、またはHTMLページである
メッセージでどのケースかは分かります。ステータスコードは次のコマンドで確認してください。
curl -I https://yourdomain.com/robots.txt
- 404: 害はありませんが、サイトマップを記載できるよう、シンプルなファイルを公開しておきましょう。上の「すべて許可」の例を使ってください。
Content-Type: text/htmlの200: アプリが未知のURLに対してウェブページを返しています。アプリのキャッチオールルートより前に、本物のテキストファイルを配信してください。- 403: セキュリティルールがファイルをブロックしています。
/robots.txtをすべてのアクセスに対して許可してください。 - 5xxまたはタイムアウト: 最優先で修正してください。Googleはこれを検出するたびに12時間クロールを停止し、RFC 9309はクローラーにサイト全体がdisallowされているものとみなすよう定めています。
robots.txtがAI検索クローラーをブロックしている
ブロックされた各トークンが使っているグループ(専用のグループまたは *)を特定し、トークンごとにポリシーを決めます。ChatGPT、Claude、Perplexityの回答で引用されたいなら、OAI-SearchBot、Claude-SearchBot、PerplexityBot を許可してください。学習用トークンは、希望するなら別途ブロックします。指名したグループは * のルールを継承しないことに注意してください。ファイアウォールのテストで警告が出ていた場合、修正すべきはrobots.txtではなくCDNまたはWAFの設定です。AIクローラーガイドを参照してください。
XMLサイトマップが見つからない
- 正規化されたインデックス可能なURLのサイトマップを生成します。ほとんどのCMSで可能です。WordPressのコアは
/wp-sitemap.xmlを、Yoast SEOとRank Mathは/sitemap_index.xmlを配信し、Next.jsではapp/sitemap.tsを追加します。 - 絶対URLをrobots.txtに追加します。
Sitemap: https://www.example.com/sitemap.xml - Google Search ConsoleとBing Webmaster Toolsで送信します。
- Googleの上限、つまり1ファイルあたり50,000 URLまたは非圧縮で50 MB以内に収めます(サイトマップの作成と送信)。それより大きなサイトはサイトマップインデックスで分割してください。
noindexタグまたはX-Robots-Tagヘッダーがインデックスをブロックしている
- ページのソースを表示して
noindexを検索します。メタタグ内にある場合は、それを追加している設定を探します。SEOプラグインのページ別オプション、テーマの設定、ステージング用のフラグなどです。WordPressでは、公開後にオンのまま残されがちな「設定 › 表示設定 › 検索エンジンでの表示」を確認してください。 - ソースに問題がなければ、
curl -I https://yourdomain.com/でヘッダーを確認します。X-Robots-Tag: noindexヘッダーは、通常サーバー、CDNのルール、ホスティングの「ステージング」モードに由来します。 - 削除したら、Search ConsoleのURL検査でホームページのインデックス登録をリクエストします。
具体例(架空)
以下は実データではなく、架空の例です。架空のクリニックであるOakridge Dentalがサイトをリニューアルし、2週間以内にGoogleからのトラフィックの大半を失いました。robots.txtチェッカーの報告は次のとおりです。
| チェック | 結果 |
|---|---|
| robots.txt | 不合格:「robots.txt blocks Google from the whole site.」 |
| AIクローラーのアクセス | 不合格:「robots.txt blocks 7 AI search crawlers.」 |
| XMLサイトマップ | 合格:サイトマップインデックスを検出 |
| インデックス許可 | 合格 |
ファイルには User-agent: * と Disallow: / だけが書かれており、デプロイスクリプトがステージングサーバーからコピーしたものでした。修正には10分かかりました。チームはファイルを「すべて許可」の例にサイトマップ行を加えたものに置き換え、robots.txtをステージングの同期対象から除外し、Search Consoleで再クロールをリクエストし、チェッカーを再実行して合格しました。このファイルはBingbotとAI検索クローラーもブロックしていたため、同じ修正でBing、Copilot、AI回答への掲載資格も回復しました。
15分でできるrobots.txtチェックリスト
- 無料のrobots.txtチェッカーを実行し、不合格のチェックをすべて控える。
/robots.txtが5xxやHTMLではなく、プレーンテキストで200を返すことを確認する。- すべてのグループを読み、どのクローラーを指名しているか、
/や重要なセクションを誤ってブロックしていないかを確認する。 - 重要なルールは、指名したすべてのグループに繰り返し記述する。
*は継承されない。 - サイトマップを絶対URLで記載する。
- 検索結果に出したくないものが、
noindexではなくrobots.txtに頼っていないか確認する。 - 変更後はSearch Consoleで再クロールをリクエストし、再チェックする。
Searviaでできること
無料のrobots.txtチェッカーは、Googlebot、そのほか9つのAIおよび検索クローラー、2つのAI学習オプトアウトトークンに対してファイルをテストし、サイトマップを見つけ、noindexのシグナルまで、共有可能な1つのレポートにまとめて確認します。サイトのそれ以外の部分については、Searviaアカウントのサイト監査が検索エンジンと同じ方法でページをクロールし、robots.txtを尊重しながら、サイトマップ内のnoindexページ、壊れたページ、リダイレクトを毎週指摘します。そのため、不適切なデプロイもトラフィックが落ちてからではなく、数日以内に見つけられます。Search Consoleを連携すれば、監査と並べて「robots.txtによってブロックされました」やインデックス登録の推移を確認できます。完全なチェックリストの中でrobots.txtがどこに位置づくかは、テクニカルSEO監査ガイドをご覧ください。
よくあるご質問
- robots.txtとは何ですか?
- robots.txtは、ホストのルート(例:https://www.example.com/robots.txt)に置くプレーンテキストのファイルで、クローラーが取得してよいURLを伝えます。RFC 9309、つまりRobots Exclusion Protocolで定義されています。ルールはGooglebotやGPTBotなどのユーザーエージェントごとにグループ化され、URLパスを指定した Allow 行と Disallow 行を使います。行儀のよいクローラーは従いますが、アクセス制御ではありません。
- robots.txtでページをGoogleに表示させないようにできますか?
- できません。Googleは、robots.txtはウェブページをGoogleに表示させないための仕組みではないとしています。disallowされたURLでも、ほかのページからリンクされていればインデックスされることがあり、通常は説明文なしで表示されます。検索結果に出したくない場合は、クロールを許可したうえで noindex メタタグまたは X-Robots-Tag ヘッダーを追加するか、ページをパスワードで保護してください。
- サイトにrobots.txtがないとどうなりますか?
- /robots.txt が404またはその他の4xx(429を除く)を返す場合、GoogleとRFC 9309は制限がないものとして扱うため、サイト全体がクロールされる可能性があります。多くのサイトでは問題ありません。5xxエラーやタイムアウトは話が別です。Googleは12時間クロールを停止し、その後は最後にキャッシュしたコピーに頼ります。RFC 9309は、クローラーは完全なdisallowとみなさなければならないと定めています。
- Googleはrobots.txtのcrawl-delayやnoindexに対応していますか?
- いいえ。Googleがrobots.txtで対応するフィールドは user-agent、allow、disallow、sitemap の4つだけです。crawl-delayやそのほかの行は無視されます。crawl-delayを読み取るクローラーもあり、たとえばAnthropicは自社のボットが対応しているとしています。Googleのインデックスからページを除外するには、代わりに noindex メタタグまたは X-Robots-Tag ヘッダーを使ってください。
- robots.txtファイルはどうやってテストしますか?
- robots.txtチェッカーを実行して、ファイルが存在するか、GooglebotやAIクローラーをサイトからブロックしていないか、サイトマップが記載されているかを確認します。そのうえで、Google Search Consoleのrobots.txtレポートでGoogleが取得したファイルや解析上の問題を確認し、URL検査ツールで特定のURLがブロックされていないかを確認してください。
ソース
- RFC 9309: Robots Exclusion Protocol – IETF
- How Google interprets the robots.txt specification – Google Search Central
- Introduction to robots.txt – Google Search Central
- Block Search indexing with noindex – Google Search Central
- robots.txt report – Search Console Help
- Google's common crawlers – Google Search Central
- About Applebot – Apple Support
- Overview of OpenAI Crawlers – OpenAI
- Does Anthropic crawl data from the web, and how can site owners block the crawler? – Claude Help Center
- Build and submit a sitemap – Google Search Central
- AI features and your website – Google Search Central