検索エンジンのクローラーがサイトを訪問する際、最初に取得するのが robots.txt というファイルです。1ページもクロールする前に、このファイルを読んでどこを巡回してよいかを判断します。
正しく設定すれば管理画面の保護やクロール効率の改善に役立ちますが、設定ミスをするとサイト全体がGoogleから消えることもある重要なファイルです。本記事では基本的な書き方から、AIクローラーのブロック設定、WordPress・Shopifyへの設置方法、よくある設定ミスまで実践的に解説します。
robots.txtとは?
robots.txt は、Webサーバーのルートに置くプレーンテキストファイルです。場所は必ず https://example.com/robots.txt で固定——サブディレクトリには置けません。「ロボット排除プロトコル(Robots Exclusion Protocol)」という業界標準に基づいており、善良なクローラーはこの指示に従います。
robots.txtとnoindexの違い
これはSEOの中で最も混同されやすい概念のひとつです:
- robots.txt:クローラーがそのURLを訪問(クロール)するかどうかを制御する
- noindexメタタグ:クロールされたページが検索結果に表示(インデックス)されるかどうかを制御する
robots.txtでブロックされたページでも、他サイトからリンクされていればGoogleがURLを発見して検索結果に表示することがあります。ページを検索結果から確実に除外したい場合は、クロールを許可した状態でnoindexを設定してください。
robots.txtの書き方(ディレクティブ解説)
ファイルは行ベースで記述します。「ディレクティブ: 値」の形式で、空行でブロックを区切ります。
User-agent(対象クローラーの指定)
User-agent: * # すべてのクローラーに適用 User-agent: Googlebot # Googleのみ User-agent: GPTBot # OpenAIのAIクローラーのみ
アスタリスク(*)はワイルドカードで、個別指定がないすべてのクローラーに適用されます。特定のクローラー名を指定したブロックがある場合、そちらが優先されます。
DisallowとAllow(クロール制御)
Disallowは指定パス以下のURLをクロール禁止にします。Allowは広いDisallowの中で特定パスだけを許可します。より具体的なルールが優先されます。
User-agent: * Disallow: /admin/ # /admin/ 以下をすべてブロック Disallow: /search? # パラメーター付きURL(検索結果ページ等)をブロック Disallow: / # サイト全体をブロック(危険!) Disallow: # 空欄=すべて許可 # 広くブロックしながら特定ページだけ許可する例 Disallow: /private/ Allow: /private/public-page.html
パスマッチングは前方一致です。Disallow: /blog は /blog、/blog/、/blog/post-1 をすべてブロックします。末尾スラッシュに注意:/admin はそのURLだけ、/admin/ はディレクトリ全体をブロックします。
→ 正しい構文を自動生成: robots.txt ジェネレーター | 設定を検証: robots.txt チェッカー
Sitemap(サイトマップの場所を指定)
クローラーにXMLサイトマップの絶対URLを伝えます。クロール制限ではなく、コンテンツ発見の手がかりです。
Sitemap: https://example.com/sitemap.xml Sitemap: https://example.com/sitemap-news.xml # 複数OK
Crawl-delay(クロール間隔)
クローラーにリクエスト間のウェイト時間(秒)を指示します。BingbotやBaiduspiderは対応していますが、Googlebotはこのディレクティブを無視します。Googleのクロール頻度を下げたい場合はGoogle Search ConsoleのCrawl Rate設定を使ってください。
User-agent: Bingbot Crawl-delay: 10
よく使うrobots.txt設定パターン
すべて許可(一般的なサイトの基本設定)
User-agent: * Allow: / Sitemap: https://example.com/sitemap.xml
管理画面・ログインページをブロック
User-agent: * Disallow: /admin/ Disallow: /wp-admin/ Disallow: /login Disallow: /dashboard/ Sitemap: https://example.com/sitemap.xml
低品質URLをブロック(大規模サイト向け)
User-agent: * Disallow: /search? Disallow: /tag/ Disallow: /?sort= Disallow: /?filter= Disallow: /page/ Sitemap: https://example.com/sitemap.xml
ECサイトやブログなど大規模サイトで、ファセットナビゲーションやページネーションのURLがクロールバジェットを無駄に消費するのを防ぎます。
AIクローラーをブロックする方法
2023年以降、LLM(大規模言語モデル)の学習データを収集するクローラーが急増しています。主要なAI企業はクローラーのUser-agent名を公開し、robots.txtを遵守すると表明しています。
| User-agent | 企業 | 用途 |
|---|---|---|
| GPTBot | OpenAI | ChatGPT / GPTモデルの学習 |
| ChatGPT-User | OpenAI | ChatGPTのブラウジング機能 |
| ClaudeBot | Anthropic | Claudeモデルの学習 |
| anthropic-ai | Anthropic | Anthropicのウェブ調査 |
| Google-Extended | Gemini / Bardの学習 | |
| PerplexityBot | Perplexity AI | Perplexity AIの検索 |
| Bytespider | ByteDance | TikTok AI / LLM学習 |
| CCBot | Common Crawl | AI学習データセット |
AIクローラーをすべてブロック・検索クローラーは通す設定
User-agent: GPTBot Disallow: / User-agent: ChatGPT-User Disallow: / User-agent: ClaudeBot Disallow: / User-agent: anthropic-ai Disallow: / User-agent: Google-Extended Disallow: / User-agent: PerplexityBot Disallow: / User-agent: Bytespider Disallow: / User-agent: CCBot Disallow: / User-agent: * Allow: / Sitemap: https://example.com/sitemap.xml
この設定でGooglebot・Bingbotなどの検索クローラーはそのまま通しつつ、AI学習用クローラーだけをブロックできます。robots.txtジェネレーターでは「AIクローラーをブロック」のチェックを入れるだけで自動生成できます。
注意:主要AI企業はrobots.txtを遵守すると表明していますが、非公式のスクレイパーや悪意あるボットは無視します。robots.txtは技術的なアクセス制限ではなく慣習です。
クロールバジェットとは
Googlebotは1サイトに対して1日にクロールできるページ数(クロールバジェット)が決まっています。小規模サイトでは問題になりにくいですが、数千ページ以上の大規模サイトでは重要です。
クロールバジェットが低品質なURLに消費されると、重要なページが頻繁にクロール・再インデックスされなくなります。バジェットを無駄にしやすいURL例:
- ページネーションURL(
/page/2、/page/3...) - ファセットナビゲーション(
/products?color=red&size=M) - セッションIDやトラッキングパラメーターを含むURL
- 複数のURLパターンに存在する重複コンテンツ
- ソフト404ページ(200を返すが「結果なし」と表示するページ)
robots.txtでこれらのパターンをブロックすることで、クロールバジェットを重要ページに集中させられます。
よくある設定ミス
サイト全体を誤ってブロックしてしまう
最も致命的なミスは、User-agent: * の下に Disallow: / を書いてしまうことです。すべてのクローラーがサイト全体をスキップし、時間とともにGoogleのキャッシュが切れてランキングが消えます。
デプロイ後は必ず https://yoursite.com/robots.txt をブラウザで確認してください。 robots.txt チェッカーで構文エラーやサイト全体ブロックを自動検出できます。
CSSやJavaScriptをブロックしてしまう
Googlebotはブラウザと同じようにページをレンダリングします。/wp-content/ や /assets/ をブロックすると、Googlebotがページを正しく描画できず評価が下がります。ブロックするのは管理画面・検索結果ページ・プライベートAPIのみにしてください。
セキュリティ対策としてrobots.txtを使う
robots.txtは誰でもアクセスして内容を見ることができます。Disallow: /secret-admin-panel/ と書くと、その存在を全世界に教えることになります。機密コンテンツには認証やサーバーレベルのアクセス制御を使ってください。
ファイルの置き場所が違う
robots.txtはドメインルートにのみ有効です。https://example.com/blog/robots.txt はすべてのクローラーに無視されます。
サービス別 robots.txt の設置方法
WordPress
- Yoast SEO:「SEO」→「ツール」→「ファイルエディター」→「robots.txt」タブから直接編集できます(FTP不要)。
- Rank Math:「Rank Math」→「一般設定」→「robots.txt編集」から設定できます。
- 手動:FTPまたはホスティングのファイルマネージャーで、
wp-config.phpと同じWordPressルートディレクトリにrobots.txtをアップロードします。
Shopify
- 「オンラインストア」→「テーマ」→「アクション」→「コードを編集」を開く。
- テンプレートフォルダの
robots.txt.liquidを選択(なければ作成)。 - 本ツールで生成したルールに置き換えると即時反映されます。
静的サイト(Next.js・Astro・Hugo)
Next.jsやCreate React Appは public/ フォルダ、Hugo・Astroは static/ フォルダに robots.txt を置くと、ビルド時に自動的にサイトルートに配信されます。
設置後の確認方法
- ブラウザで
https://yoursite.com/robots.txtを開いて内容を確認する。 - Google Search Console の「設定」→「robots.txt」から特定URLのブロック状態をテストできます。
- robots.txt チェッカーで構文エラー・AIクローラーブロック状況を一括診断できます(アカウント不要)。
- URLインスペクションツールで、Googlebotが実際にそのページにアクセスできるか確認できます。
よくある質問(FAQ)
- robots.txtでブロックすればGoogleの検索結果から消えますか?
- 消えるとは限りません。robots.txtはクロールを止めるだけで、インデックスからの除外を保証しません。外部サイトからリンクされているページはURLをクロールなしで検索結果に表示することがあります。確実に除外するにはnoindexメタタグを設定するか、Google Search Consoleの削除ツールを使ってください。
- 変更はどのくらいで反映されますか?
- Googleはrobots.txtを約24時間ごとに再取得しますが、古いバージョンを数日キャッシュすることがあります。緊急の変更はGoogle Search ConsoleからCacheの更新リクエストができます。
- 小規模サイトでもrobots.txtは必要ですか?
- 必須ではありませんが推奨します。Sitemapディレクティブをrobots.txtに記載するだけでGoogleがコンテンツをより早く発見できます。管理画面や非公開ページがあれば、それをブロックするためにrobots.txtは有効です。
- サブドメインでも同じrobots.txtが有効ですか?
- いいえ。各サブドメインに独自のrobots.txtが必要です。example.comのrobots.txtはblog.example.comには適用されません。
- 特定のファイル形式(PDF等)をブロックできますか?
- できます。ワイルドカードを使います:Disallow: /*.pdf でPDFファイルを、Disallow: /*.json でJSONファイルをすべてブロックできます。
まとめ
- robots.txtはクロールを制御するもの——検索結果からの除外にはnoindexを使う。
- Sitemapディレクティブを必ず記載し、クローラーがコンテンツを効率よく発見できるようにする。
- 管理画面・検索結果URL・低品質ページネーションをブロックしてクロールバジェットを節約する。
- AIクローラー(GPTBot・ClaudeBot等)をブロックしたい場合、User-agentごとにDisallow: /を設定する。
- CSSやJavaScriptは絶対にブロックしない——Googlebotがレンダリングできなくなる。
- robots.txtはセキュリティ対策にならない——公開ファイルなので機密情報を書かない。
- 変更後は必ずGoogle Search Consoleでテストする。
今すぐ使う: robots.txt ジェネレーター → チェッカーで検証 → テンプレート集