AEO Check Blog
← 記事一覧

robots.txtの書き方完全ガイド|2026年の正しい設定とやってはいけない例

robots.txtの設定を何年も放置していませんか? 2026年現在、AI OverviewやChatGPT検索の登場により、robots.txtは「検索エンジン向けの古い設定ファイル」から「AIクローラーへのアクセス制御の要」に変わりました。

設定を間違えると、Googleのインデックスから消えるだけでなく、ChatGPTやPerplexityの回答にも表示されなくなります。逆に正しく設定すれば、従来の検索エンジンとAI検索の両方で可視性を確保できます。

この記事では、robots.txtの基本構文から2026年に追加すべきAIクローラー設定まで、コピペ可能なテンプレート付きで解説します。

自社サイトのrobots.txt設定が正しいか不安な方は、無料診断ツールで自動チェックできます。


robots.txtとは何か

robots.txtは、Webサイトのルートディレクトリに配置するテキストファイルです。検索エンジンやAIのクローラーに対して「どのページをクロールしてよいか」を伝えます。

技術的にはRFC 9309(Robots Exclusion Protocol)で標準化されており、https://あなたのドメイン/robots.txtに配置します。

重要な前提: robots.txtはクローラーへの「お願い」であり、技術的な強制力はありません。主要な検索エンジンやAIクローラーはこれを尊重しますが、悪意あるボットは無視する可能性があります。機密情報の保護にはrobots.txtではなく認証を使ってください。


robots.txtの基本構文

robots.txtで使えるディレクティブは5つです。RFC 9309に基づいて解説します。

User-agent(対象クローラーの指定)

User-agent: Googlebot

どのクローラーに対するルールかを指定します。*(アスタリスク)は全クローラーを意味します。

Disallow(クロール禁止)

Disallow: /admin/
Disallow: /private/secret.html

指定したパスへのクロールを禁止します。空のDisallow:は「何も禁止しない(全て許可)」を意味します。

Allow(クロール許可)

Allow: /admin/public/
Disallow: /admin/

Disallowで禁止した範囲の中で、特定のパスだけ許可する場合に使います。RFC 9309では、より具体的(長い)パスが優先されます。

Sitemap(サイトマップの場所)

Sitemap: https://example.com/sitemap.xml

サイトマップのURLを指定します。User-agentブロックの外に記述します。複数指定可能です。

Crawl-delay(非標準)

Crawl-delay: 10

クロール間隔を秒数で指定します。RFC 9309には含まれていない非標準ディレクティブです。Googleは無視しますが、Bing・Yandex等は尊重します。サーバー負荷が心配な場合のみ使用してください。

構文ルールまとめ

ルール 説明
大文字小文字 ディレクティブ名は大文字小文字を区別しない。パスは区別する
パスの指定 /で始まる。*(ワイルドカード)と$(末尾一致)が使える
優先順位 同じUser-agentに複数ルールがある場合、より具体的(長い)パスが優先
グループ 1つのUser-agentに対するルールは連続して記述する
コメント #以降はコメント
文字コード UTF-8
ファイルサイズ 500KB以下(Google推奨

実際の書き方:コピペ可能なテンプレート3パターン

パターン1: 標準的な企業サイト

管理画面と内部検索結果を除外し、それ以外は全て許可する基本パターンです。

# 標準企業サイト向け robots.txt
User-agent: *
Allow: /
Disallow: /admin/
Disallow: /search?
Disallow: /tmp/
Disallow: /*?sessionid=

# AIクローラー: 検索表示を許可
User-agent: OAI-SearchBot
Allow: /

User-agent: Claude-SearchBot
Allow: /

User-agent: PerplexityBot
Allow: /

# AIクローラー: 学習利用を拒否(任意)
User-agent: GPTBot
Disallow: /

User-agent: ClaudeBot
Disallow: /

Sitemap: https://example.com/sitemap.xml

パターン2: ECサイト

商品ページは許可しつつ、カート・決済・会員ページを保護します。フィルタ付きURLの重複クロールも防止します。

# ECサイト向け robots.txt
User-agent: *
Allow: /
Disallow: /cart/
Disallow: /checkout/
Disallow: /my-account/
Disallow: /order-confirmation/
Disallow: /search?
Disallow: /*?sort=
Disallow: /*?filter=
Disallow: /*&page=

# 商品ページ・カテゴリは明示的に許可
Allow: /products/
Allow: /categories/

# AIクローラー: 商品情報の検索表示を許可
User-agent: OAI-SearchBot
Allow: /products/
Allow: /categories/
Allow: /blog/
Disallow: /cart/
Disallow: /checkout/
Disallow: /my-account/

User-agent: Claude-SearchBot
Allow: /products/
Allow: /categories/
Allow: /blog/
Disallow: /cart/
Disallow: /checkout/
Disallow: /my-account/

User-agent: PerplexityBot
Allow: /products/
Allow: /categories/
Allow: /blog/
Disallow: /cart/
Disallow: /checkout/
Disallow: /my-account/

Sitemap: https://example.com/sitemap.xml
Sitemap: https://example.com/sitemap-products.xml

パターン3: ブログ・メディアサイト

記事コンテンツを最大限公開し、管理画面とプレビューのみ除外します。

# ブログ・メディアサイト向け robots.txt
User-agent: *
Allow: /
Disallow: /wp-admin/
Disallow: /wp-login.php
Disallow: /*?preview=true
Disallow: /tag/
Disallow: /author/

# 全AIクローラーに記事を公開(検索表示 + 学習)
User-agent: OAI-SearchBot
Allow: /

User-agent: GPTBot
Allow: /

User-agent: ClaudeBot
Allow: /

User-agent: Claude-SearchBot
Allow: /

User-agent: PerplexityBot
Allow: /

User-agent: Googlebot
Allow: /

Sitemap: https://example.com/sitemap.xml
Sitemap: https://example.com/news-sitemap.xml

プラットフォーム別の設定方法

WordPress

WordPressはデフォルトで仮想的なrobots.txtを生成します。カスタマイズするには物理ファイルを作成します。

方法1: 物理ファイルを配置

# WordPressルートディレクトリに作成
nano /var/www/html/robots.txt

物理ファイルが存在すると、WordPressの仮想robots.txtより優先されます。

方法2: プラグインを使用

Yoast SEO、Rank Math等のSEOプラグインでGUIから編集できます。

  • Yoast SEO: ツール → ファイルエディター → robots.txt
  • Rank Math: 一般設定 → robots.txt を編集

WordPress固有の推奨設定:

User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Disallow: /wp-includes/
Disallow: /wp-content/plugins/
Disallow: /*?replytocom=
Disallow: /trackback/

/wp-admin/admin-ajax.phpはフロントエンドのAjax処理に使われるため、許可が必要です。

Shopify

Shopifyはrobots.txtを自動生成します。2021年以降、robots.txt.liquidテンプレートでカスタマイズ可能です。

設定手順:

  1. Shopify管理画面 → オンラインストア → テーマ → アクション → コードを編集
  2. Templatesフォルダにrobots.txt.liquidを作成
  3. 以下のコードを記述:
{% comment %}
  Shopify robots.txt カスタマイズ
{% endcomment %}
User-agent: *
Disallow: /admin
Disallow: /cart
Disallow: /orders
Disallow: /checkouts/
Disallow: /checkout
Disallow: /*?q=*
Disallow: /search?*
Allow: /collections/
Allow: /products/
Allow: /pages/
Allow: /blogs/

User-agent: OAI-SearchBot
Allow: /products/
Allow: /collections/
Allow: /blogs/
Allow: /pages/

User-agent: PerplexityBot
Allow: /products/
Allow: /collections/
Allow: /blogs/
Allow: /pages/

Sitemap: {{ shop.url }}/sitemap.xml

静的サイト(HTML/Hugo/Jekyll等)

ルートディレクトリにrobots.txtファイルを直接配置します。

# プロジェクトルートに作成
echo "User-agent: *
Allow: /

Sitemap: https://example.com/sitemap.xml" > public/robots.txt

Hugo の場合はstatic/robots.txt、Jekyll の場合はルートに配置すればビルド時にコピーされます。

Next.js(App Router)

Next.js 13以降のApp Routerでは、app/robots.tsで動的に生成できます。

// app/robots.ts
import type { MetadataRoute } from 'next'

export default function robots(): MetadataRoute.Robots {
  return {
    rules: [
      {
        userAgent: '*',
        allow: '/',
        disallow: ['/api/', '/admin/', '/_next/'],
      },
      {
        userAgent: 'OAI-SearchBot',
        allow: '/',
      },
      {
        userAgent: 'Claude-SearchBot',
        allow: '/',
      },
      {
        userAgent: 'PerplexityBot',
        allow: '/',
      },
      {
        userAgent: 'GPTBot',
        disallow: '/',  // 学習利用を拒否する場合
      },
    ],
    sitemap: 'https://example.com/sitemap.xml',
  }
}

Pages Routerの場合はpublic/robots.txtに静的ファイルを配置します。


2026年に追加すべきAIクローラー設定

2026年現在、主要なAIクローラーは12種類以上存在します。「検索表示用」と「学習用」を区別して設定することが重要です。

許可/拒否の判断表

クローラー 役割 検索表示したい場合 学習拒否したい場合
OAI-SearchBot ChatGPT検索表示 ✅ Allow ✅ Allow(検索のみ)
GPTBot OpenAI学習用 どちらでも ❌ Disallow
Claude-SearchBot Claude検索表示 ✅ Allow ✅ Allow(検索のみ)
ClaudeBot Anthropic学習用 どちらでも ❌ Disallow
PerplexityBot Perplexity検索 ✅ Allow ✅ Allow
Googlebot Google検索+AI Overview ✅ Allow ブロック不可(検索も消える)
Google-Extended Gemini学習用 どちらでも ❌ Disallow
Meta-ExternalAgent Meta AI学習用 どちらでも ❌ Disallow
Applebot-Extended Apple AI学習用 どちらでも ❌ Disallow
Bytespider ByteDance学習用 どちらでも ❌ Disallow

各クローラーの詳細な役割と設定方法はAIクローラー完全ガイドで解説しています。

最低限追加すべき設定

既存のrobots.txtに以下を追加するだけで、AI検索への対応が完了します。

# === AI検索対応(2026年追加分) ===

# ChatGPT検索に表示
User-agent: OAI-SearchBot
Allow: /

# Claude検索に表示
User-agent: Claude-SearchBot
Allow: /

# Perplexityに引用
User-agent: PerplexityBot
Allow: /

# 学習利用を拒否する場合(任意)
User-agent: GPTBot
Disallow: /

User-agent: ClaudeBot
Disallow: /

User-agent: Google-Extended
Disallow: /

User-agent: Meta-ExternalAgent
Disallow: /

User-agent: Bytespider
Disallow: /

やってはいけない設定例:よくある間違い5つ

間違い1: 全クローラーを一括ブロック

# ❌ これをやると検索結果から完全に消える
User-agent: *
Disallow: /

問題: Googlebot含む全クローラーがブロックされ、検索インデックスから削除されます。AI検索にも一切表示されなくなります。

正しい対処: ブロックしたいクローラーを個別に指定してください。

間違い2: Allow と Disallow の順序を間違える

# ❌ 順序に意味があると思い込む(実際はパスの長さで決まる)
User-agent: Googlebot
Disallow: /blog/
Allow: /blog/public/

事実: RFC 9309では、**パスの長さ(具体性)**で優先順位が決まります。上記の例では/blog/public/(より具体的)が優先されるため、結果的に正しく動作します。ただし同じ長さの場合はAllowが優先されます。

間違い3: noindexの代わりにDisallowを使う

# ❌ Disallowはインデックス削除の指示ではない
User-agent: Googlebot
Disallow: /old-page/

問題: Disallowはクロールを禁止するだけで、既にインデックスされたページは削除されません。外部リンクがあれば、クロールせずにインデックスに残り続ける場合があります。

正しい対処: インデックスから削除したい場合はnoindexメタタグまたはHTTPヘッダーを使い、robots.txtではクロールを許可してください。クロールできないとnoindexを読み取れません。

間違い4: ワイルドカードの誤用

# ❌ 意図しないページまでブロックしてしまう
User-agent: *
Disallow: /*?

問題: クエリパラメータ付きの全URLがブロックされます。ページネーション(?page=2)やフィルタ(?category=shoes)も含まれ、重要なページがクロールされなくなります。

正しい対処: ブロックしたいパラメータを具体的に指定してください。

# ✅ 具体的に指定
User-agent: *
Disallow: /*?sessionid=
Disallow: /*?utm_

間違い5: robots.txtをサブディレクトリに配置

# ❌ /blog/robots.txt は無効
https://example.com/blog/robots.txt

問題: robots.txtはドメインのルート(/robots.txt)にのみ配置できます。サブディレクトリに置いても無視されます。

正しい配置: 必ずhttps://example.com/robots.txtに配置してください。サブドメイン(blog.example.com)の場合は、そのサブドメインのルートに別途配置が必要です。


設定後の確認方法

robots.txtを作成・変更したら、必ず以下の3ステップで確認してください。

1. ブラウザで直接確認

https://あなたのドメイン/robots.txt

ブラウザでアクセスし、意図した内容が表示されることを確認します。HTTPステータスが200であることも重要です(404だと「制限なし」と解釈されます)。

2. Google Search Consoleで検証

Google Search Consoleの「設定」→「クロール」→「robots.txtレポート」で、Googlebotがどのページをクロールできるかを確認できます。

特定のURLを入力して、Allow/Disallowの判定結果をテストできます。

3. AEO Checkで総合診断

AEO Check無料診断ツールでは、robots.txtの設定に加えて以下を自動チェックします:

  • 各AIクローラー(OAI-SearchBot、ClaudeBot、PerplexityBot等)の許可状況
  • 構造化データの実装状況
  • llms.txtの有無
  • AI検索対応度の総合スコア

robots.txtの設定だけでなく、AI検索対応の全体像を把握できます。


よくある質問

robots.txtがないとどうなりますか?

robots.txtが存在しない場合(404を返す場合)、全てのクローラーがサイト全体をクロール可能と解釈します。Googleの公式ドキュメントでも「robots.txtがない場合、すべてのウェブクローラーがサイト上のすべてのコンテンツにアクセスできる」と明記されています。意図的に全許可する場合でも、Sitemapディレクティブのために作成することを推奨します。

robots.txtとnoindexの違いは?

robots.txtは「クロール(アクセス)の制御」、noindexは「インデックス(検索結果への登録)の制御」です。目的が異なります。ページを検索結果から消したい場合はnoindexを使い、robots.txtではそのページへのクロールを許可してください。Disallowするとnoindexタグを読み取れず、逆にインデックスに残り続ける場合があります。

robots.txtの変更はどのくらいで反映されますか?

Googleの場合、robots.txtのキャッシュは通常24時間以内に更新されます。ただしクロール頻度が低いサイトでは数日かかる場合があります。OpenAI(OAI-SearchBot)も約24時間で反映されます。急ぎの場合はGoogle Search Consoleから再クロールをリクエストできます。

Disallow: / と Disallow: の違いは?

Disallow: /は「ルート以下の全パスをブロック」、Disallow:(空)は「何もブロックしない(全て許可)」です。スラッシュ1つの有無で意味が正反対になるため、注意が必要です。

複数のUser-agentに同じルールを適用したい場合は?

RFC 9309では、複数のUser-agent行を連続して記述し、その後にルールを書くことで同じルールを適用できます。

User-agent: GPTBot
User-agent: ClaudeBot
User-agent: Bytespider
Disallow: /

まとめ

やるべきこと 具体的な設定
基本設定 User-agent: * + Allow/Disallowで全体方針を定義
AI検索対応 OAI-SearchBot、Claude-SearchBot、PerplexityBotをAllow
学習拒否(任意) GPTBot、ClaudeBot、Google-ExtendedをDisallow
サイトマップ Sitemap:ディレクティブで場所を明示
確認 Search Console + AEO Checkで検証
やってはいけないこと リスク
User-agent: * / Disallow: / 検索結果から完全に消える
noindexの代わりにDisallow インデックスに残り続ける
サブディレクトリに配置 完全に無視される
ワイルドカードの乱用 意図しないページがブロックされる
設定後の確認を怠る 問題に気づかないまま放置

robots.txtは一度正しく設定すれば、頻繁に変更する必要はありません。ただし2026年はAIクローラーの追加・変更が続いているため、半年に一度は見直すことを推奨します。

自社サイトのrobots.txt設定とAI検索対応状況を確認したい方は、無料診断ツールで7カテゴリの自動診断ができます。スコアと改善ポイントをMarkdown形式でダウンロード可能です。

この記事の内容、あなたのサイトは対応できていますか?

URLを入力するだけで、AI検索対応度を無料診断します。

無料で診断する →