robots.txt設定ガイド:SEO向け完全版
robots.txtがクロールに与える影響、インデックス登録を制御できない場面、必要なページをブロックせずにディレクティブをテストする方法を解説します。
robots.txtは、サイトのルートに置くプレーンテキストのファイルです。検索エンジンのクローラーに対して、アクセスしてよいセクションと避けてほしいセクションを伝えます。クローラーがサイトを訪れたときに最初に読むファイルで、1994年から使われており、今もクロール制御の事実上の標準です。
最大の制約は、Disallowでブロックしたページが自動的にはインデックスから消えない点です。他のサイトからリンクされていれば、Googleはページを訪れなくてもURLをインデックスに登録することがあり、検索結果のスニペットが空になる場合もあります。ページをインデックスから完全に削除するには、別の手段が必要です。
robots.txtとは何か、その限界
robots.txtはドメインのルートに置きます(https://example.com/robots.txt)。サブドメインにはそれぞれ専用のファイルが必要で、blog.example.comならhttps://blog.example.com/robots.txtです。基本のディレクティブはRobots Exclusion Standard(REP)で定められており、GoogleとYandexが独自に機能を拡張しています。
形式と構文
ファイルは「レコード」と呼ばれるブロックで構成されます。各レコードは1つ以上のUser-agentディレクティブで始まり、Disallow、Allow、Crawl-delay、Sitemapの行を何行でも含められます。レコードの区切りは空行で、コメントは#で始めます。
| ディレクティブ | 対応 | 説明 |
|---|---|---|
| User-agent | すべて | ボットの識別子です。*は「すべてのクローラー」を意味します。1つのブロックに複数のUser-agent行を書けます。 |
| Disallow | すべて | クロールを禁止するパスです。値が空の場合は何もブロックしません(すべて許可)。 |
| Allow | Google、Yandex | Disallowで禁止したセクション内のパスを明示的に許可します。Disallowより優先されます。 |
| Crawl-delay | Yandex、Bing | ボットのリクエスト間隔の最小値(秒)です。Googleは無視します。 |
| Sitemap | Google、Yandex、Bing | XMLサイトマップの絶対URLです。Sitemap行は複数書けます。 |
ワイルドカード:*と$
GoogleとYandexは、DisallowとAllowのパスで2種類のワイルドカードに対応しています。アスタリスク*は任意の文字列(空文字列を含む)に一致します。ドル記号$はURLの末尾を表し、最後の文字までの完全一致になります。
# Block all URLs with the ?sort= parameter
Disallow: /*?sort=
# Block only /page (exact match, not /page/child)
Disallow: /page$
# Block all PDFs across the entire site
Disallow: /*.pdf$Sitemapディレクティブはファイル内のどこにでも置けます。特定のUser-agentブロックの中に入れる必要はありません。URLは必ずスキーム付きの絶対URLで書きます。
Sitemap: https://example.com/sitemap.xmlシナリオ別の記述例
シナリオ1:シンプルな公開サイト
非公開セクションのない小規模サイトなら、最小限のファイルで足ります。基本はすべて許可し、管理画面と技術的なパスだけをブロックして、サイトマップを宣言します。
# robots.txt for example.com — simple public site
User-agent: *
Disallow: /admin/
Disallow: /login
Disallow: /dashboard/
Sitemap: https://example.com/sitemap.xmlシナリオ2:カタログとパラメーター付きページを持つ大規模ECサイト
オンラインストアでは、絞り込み、並べ替え、ページネーションによって数十万のURLが生成されます。その大半は重複ページか、単独では価値のないページです。ワイルドカード付きのDisallowでパラメーター付きURLをブロックし、パラメーターのないカテゴリページと商品ページはクロール可能にしておきます。
# robots.txt for e-commerce example.com
User-agent: *
# Technical and admin sections
Disallow: /admin/
Disallow: /checkout/
Disallow: /cart
Disallow: /account/
Disallow: /api/
# Parametric catalogue duplicates
Disallow: /*?sort=
Disallow: /*?filter=
Disallow: /*?page=
Disallow: /*?ref=
Disallow: /search
# Explicitly allow a useful parameter in one section
Allow: /catalog/shoes?size=
Crawl-delay: 1
Sitemap: https://example.com/sitemap.xmlシナリオ3:ステージング用・一時的なページがあるサイト
ウェビナーのランディングページ、下書き、テンプレートページ、ステージング用のセクションは、クロールをブロックしておきます。パスの接頭辞でDisallowを指定し、必要なら特定のボット向けに別のブロックを設けます。
# robots.txt for example.com — main site with staging sections
User-agent: *
Disallow: /webinar-drafts/
Disallow: /templates/
Disallow: /staging/
Disallow: /_preview/
Disallow: /thank-you-test
# Block the entire site for a specific bot (e.g. an aggressive crawler)
User-agent: AhrefsBot
Disallow: /
User-agent: SemrushBot
Disallow: /
Sitemap: https://example.com/sitemap.xmlDisallow・meta robots noindex・X-Robots-Tagの違い
この3つは役割の異なる別々の手段です。取り違えると、よくある失敗につながります。robots.txtでブロックしたページにnoindexのmetaタグも付けてしまうケースです。ページがクロールできないため、Googleはmetaタグを読めず、noindexは実行されません。
| 手段 | 記述場所 | 役割 | 使う場面 |
|---|---|---|---|
| robots.txtのDisallow | robots.txt | ボットがURLを訪れるのを防ぎます。すでにインデックスにあるURLは削除されません。 | サービス用のセクションをブロックし、不要なクロールバジェットの消費を減らす。 |
| meta robots noindex | HTMLの<head> | ボットの訪問は許可し、インデックスへの登録だけを禁止します。ボットがタグを読み、指示に従います。 | 特定のページをインデックスから外す(サンクスページ、ページネーション、絞り込みページ)。 |
| X-Robots-Tag | HTTPレスポンスヘッダー | meta robotsと同じ働きで、PDF、画像、文書などあらゆる種類のファイルに使えます。 | HTML以外のリソース(PDF、DOCX、画像)のインデックス登録を制御する。 |
HTTPレスポンスヘッダーでX-Robots-Tagを指定する例です(Nginxまたはアプリケーションコードで設定します)。
# Nginx: prevent indexation of all PDFs
location ~* \.pdf$ {
add_header X-Robots-Tag "noindex, nofollow";
}robots.txtのテスト方法
変更は必ず公開前に検証します。タイプミス1つで、サイト全体がクローラーからブロックされることもあります。
- Google Search Consoleのrobots.txtテスター:GSCに組み込まれています。URLを入力すると、Googlebotなどのボットに許可されているかブロックされているかを確認できます。
- Yandex Webmasterのrobots.txt解析:Yandex向けの同等のツールです。Yandexのボットがファイルをどう解釈するかを確認できます。
- Screaming Frog SEO Spider → Configuration → Robots.txt:robots.txtに従ってサイトをクロールし、ブロックされたURLをレポートに一覧表示します。
- curl:コマンドラインでファイルの内容とHTTPステータスをすばやく確認できます。
# Fetch robots.txt and inspect its contents
curl -s https://example.com/robots.txt
# Check HTTP status (must be 200)
curl -I https://example.com/robots.txtよくあるミスと対処法
| ミス | 症状 | 対処 |
|---|---|---|
| サイト全体にDisallow: / | Googlebotがすべてのクロールを止めます。GSCではページが「robots.txtによりブロック」と表示されます。 | この行を削除するか、特定のパスに置き換えます。デプロイ時に紛れ込むことがよくあります。 |
| パスに紛れ込んだスペース | Disallow: /admin /(スペース入り)のように書くと、ボットはパスをそのまま読むため、何もブロックされません。 | スペースを削除します。パスは大文字小文字も空白も区別されます。 |
| 同じページにnoindexとDisallowを併用 | ページがインデックスに残り、noindexは実行されません。 | Disallowを外し、noindexだけにします。タグを読むには、ボットがページを訪れられる必要があります。 |
| ルールの前にUser-agentがない | 構文エラーになり、ルールはどのボットにも適用されません。 | Disallow/Allowのブロックの前にUser-agent: *を追加します。 |
| robots.txtが404または500を返す | 404は「制限なし」として扱われ、500はクロールが一時的に止まります。 | HTTP 200を返すようにします。空のファイルは「すべて許可」と同じ扱いです。 |
セキュリティ上の注意
robots.txtは公開されており、検索エンジンにもインデックスされるため、誰でも読めます。管理画面、バックアップ、内部API、設定ファイルのパスをrobots.txtに書くと、サイトの地図を攻撃者に渡すことになります。
- 機密性の高いパスを書かない:バックアップ(.zip、.sql)、設定ファイル(.env、config.php)、内部APIなど。
- 機密セクションはサーバー側で保護する:robots.txtではなく、HTTP Basic認証、IPアドレスの許可リスト、OAuthを使います。
- Disallowの一覧は最小限にする:SEOの観点でクロールから外す必要があるパスだけを書きます。
- GSCでrobots.txtを定期的に確認する:デプロイでDisallow: /が紛れ込んでいないかを確かめます。
チェックリストと完成例
- ファイルがhttps://example.com/robots.txtでアクセスでき、HTTP 200を返す
- UTF-8でエンコードされ、BOM(Byte Order Mark)がない
- すべてのブロックがUser-agentで始まっている
- User-agentごとのブロックが空行で区切られている
- 同じページにDisallowとnoindexを併用していない
- 機密性の高いパスを公開していない
- サーバー負荷が高い場合は、Yandex向けにCrawl-delayを設定している
- Sitemapディレクティブがルートのインデックスファイルを指している
- GSCとYandex Webmasterでファイルを検証した
- Screaming FrogでブロックされたURLの数が想定どおりである
コメント付きで、example.com向けのrobots.txtの完成例を示します。ほとんどのシナリオに使える汎用テンプレートです。
# robots.txt for example.com
# Updated: 2026-05-15
# Rules for all crawlers
User-agent: *
# Admin and auth sections
Disallow: /admin/
Disallow: /login
Disallow: /dashboard/
Disallow: /account/
# Technical paths
Disallow: /api/
Disallow: /_next/
Disallow: /cdn-cgi/
# Parametric duplicates (e-commerce)
Disallow: /*?sort=
Disallow: /*?filter=
Disallow: /*?ref=
Disallow: /search
# Staging and temporary pages
Disallow: /staging/
Disallow: /webinar-drafts/
Disallow: /templates/
# Explicit allow for a useful API path
Allow: /api/og-image/
# Crawl rate for Yandex
User-agent: Yandex
Crawl-delay: 1
# Aggressive SEO bots (optional)
User-agent: AhrefsBot
Disallow: /
User-agent: SemrushBot
Disallow: /
# Sitemap
Sitemap: https://example.com/sitemap.xmlFAQ
robots.txtは検索順位に影響しますか?
robots.txtが404を返すとどうなりますか?
1つのファイルでGooglebotとYandexに別々のルールを設定できますか?
Disallow: /でサイト全体がブロックされました。すぐに直すには?
ディレクトリはブロックせず、1つのファイルだけをブロックするには?
Check it with SpiderHead
Free and local: run the audit on your own machine.



