robots.txtの書き方と注意点【クロール制御の基礎から設定ミスまで】
robots.txtは、検索エンジンのクローラーに対してサイト内のどのURLにアクセスしてよいかを伝えるテキストファイルです。設定ミスはサイト全体のインデックス消失につながる可能性もあり、慎重な設計と検証が不可欠です。
本記事では、robots.txtの基本構文から、主要クローラー別の制御方法、検索順位を落とす設定ミスとその対策までを解説します。
10年以上の国際SEOコンサルティング経験と、SEGO診断ツールで蓄積した実データをもとに、中小企業のサイト運営者が今日から実践できる内容にまとめました。
AI検索エンジンのクロール制御を含めて体系的に学びたい方は、LLMOとは?ChatGPTに引用されるサイトをつくる5つの対策もあわせてご覧ください。
Contents
robots.txtとは何か
robots.txt(ロボッツ・テキスト)は、サイトのルートディレクトリに配置するプレーンテキストファイルで、クローラーに対するアクセス制御の指示書として機能します。
GooglebotやBingbot、AI検索クローラーなどがサイトに訪問した際、最初にアクセスする「クロールのルールブック」です。ファイルの配置場所は必ずルートURLの直下でなければなりません。
https://example.com/robots.txt ← 正しい配置
https://example.com/subdir/robots.txt ← 無効(クローラーは参照しない)
robots.txtが存在しない場合、クローラーはサイト全体へのアクセスが許可されているものと解釈します。したがって「robots.txtがなくても動く」のは事実ですが、クロールを制御したい場合は必ず設定が必要です。
重要な前提として、robots.txtはクロールを制御するものであり、インデックスを制御するものではありません。robots.txtでDisallowしたページがインデックスから除外されるとは限らず、外部からリンクされているページはURLがインデックスされる場合があります。インデックスを制御したい場合はnoindexメタタグを使用してください。
Googleのrobots.txt公式ドキュメントでは、この点が明確に区別されています。
robots.txtの基本構文と書き方
robots.txtはUser-agent・Disallow・Allow・Sitemapの4つのディレクティブで構成されます。
基本的な構文を以下に示します。
# すべてのクローラーに適用
User-agent: *
Disallow: /admin/
Disallow: /private/
Allow: /admin/public-page/
# Googlebot専用の設定
User-agent: Googlebot
Disallow: /no-google/
# サイトマップの場所を通知
Sitemap: https://example.com/sitemap.xml
各ディレクティブの役割を整理します。
構文ルールとして、各グループ(User-agentから次のUser-agentまで)の間には空行を1行入れ、#から始まる行はコメントとして無視されます。大文字・小文字はディレクティブ名では区別されませんが、パスは大文字・小文字を区別します。
主要クローラーとUser-agentの設定
クローラーごとに異なるUser-agent名を使用することで、検索エンジン・AI検索・SNSクローラーへの挙動を個別に制御できます。
2026年現在、サイトに到達するクローラーは従来の検索エンジンだけではありません。ChatGPT、Claude、PerplexityなどのAI検索エンジンも独自のボットを運用しています。主要なクローラーのUser-agent名を以下に整理します。
# Google(検索 + AI)
User-agent: Googlebot
User-agent: Google-Extended
# Bing
User-agent: Bingbot
# OpenAI(ChatGPT学習・検索)
User-agent: GPTBot
User-agent: ChatGPT-User
# Anthropic(Claude)
User-agent: ClaudeBot
User-agent: anthropic-ai
# Perplexity
User-agent: PerplexityBot
# SNS・その他
User-agent: Twitterbot
User-agent: facebookexternalhit
AI検索クローラーのクロールを許可するかどうかは、サイト運営者のポリシーによって判断が異なります。AI検索エンジンへの引用・表示を望む場合はクロールを許可し、学習データへの利用を制限したい場合はGPTBotやClaudeBotをDisallowします。ただし、ブロックしても既存のインデックスや引用からAIに言及される可能性は排除できない点に注意してください。
AI検索エンジンへの対応についての詳細は、AI検索で自社は表示されている?ChatGPT・Gemini・Perplexityでの確認方法と改善策をご参照ください。
よくある設定ミスと検索順位への影響
robots.txtの設定ミスは、サイト全体のインデックスが消えるという最大級のSEOトラブルにつながる場合があります。
診断・コンサルティング経験から、頻度の高いミスとその影響を解説します。
ミス1:Disallow: / でサイト全体をブロック
開発環境・ステージング環境向けの設定をそのまま本番環境にデプロイしてしまうケースが最も深刻です。
# 【危険】サイト全体をブロック
User-agent: *
Disallow: /
この設定では、Googlebotがサイト内のすべてのURLへのアクセスを試みた際にDisallowを検出し、クロールをスキップします。数日〜数週間でSearch Consoleに「インデックス数の急減」として現れます。Next.jsやNuxt.jsのSSRプロジェクトでは、開発時に自動生成されたrobots.txtが本番デプロイに含まれるケースがあるため注意が必要です。
ミス2:DisallowとAllowの優先順位の誤解
DisallowとAllowが競合する場合、Googlebotはより具体的(長い)パスの設定を優先します。
# 意図:/admin/以下を全体的に禁止し、/admin/public/だけ許可したい
User-agent: *
Disallow: /admin/
Allow: /admin/public/
# → /admin/public/ は長いAllowが優先され、正しく動作する
# よくあるミス:同じパス長の場合
Disallow: /page/
Allow: /page/
# → 解釈はクローラー依存。Googlebotは先に書かれたDisallowを優先する
ミス3:robots.txtでnoindexを実装しようとする
前述の通り、robots.txtはインデックスを制御しません。DisallowしたページでもURLがインデックスされる場合があります。インデックスから除外したいページには、HTMLの<head>内に<meta name="robots" content="noindex">を設定してください。
ミス4:Crawl-delayをGooglebotに設定する
Crawl-delayディレクティブはBingbot等は対応していますが、Googlebotは対応していません。Googlebotのクロール頻度を調整したい場合は、Google Search Consoleの「クロールの統計情報」から設定してください。
CMS別のrobots.txt設定ポイント
WordPress・Next.js・Shopifyなど、CMS・フレームワークによってrobots.txtの管理方法と注意点が異なります。
WordPress
WordPressは、物理的なrobots.txtファイルがない場合に仮想ファイルを自動生成します。カスタマイズするには、FTPで/直下に実際のrobots.txtファイルをアップロードするか、Yoast SEO等のプラグインの「ツール → robots.txt」機能を使用します。
WordPressで特に注意が必要なのは、wp-adminのDisallow設定です。管理画面へのクロールを禁止することは一般的ですが、wp-admin/admin-ajax.phpは一部のプラグインがフロントエンドでAjaxリクエストに使用するため、Disallowすると動的機能が壊れる場合があります。
# WordPressの推奨設定例
User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Sitemap: https://example.com/sitemap.xml
Next.js(App Router)
Next.js 13.3以降では、app/robots.ts(またはrobots.js)を作成することで、/robots.txtエンドポイントが自動的に生成されます。
// app/robots.ts
import type { MetadataRoute } from "next";
export default function robots(): MetadataRoute.Robots {
return {
rules: {
userAgent: "*",
allow: "/",
disallow: ["/admin/", "/api/"],
},
sitemap: "https://example.com/sitemap.xml",
};
}
開発環境と本番環境で設定を切り替えたい場合は、環境変数を使ってNEXT_PUBLIC_SITE_URL等から判定する実装が推奨されます。SEGOもこの方式を採用しています。
Shopify
Shopifyは独自のrobots.txtを自動生成し、テーマLiquidからカスタマイズできます。robots.txt.liquidテンプレートを作成することで、デフォルト設定に対して追加・変更が可能です。
構造化データやサイトマップの設定については構造化データとは?【JSON-LD】SEOとAI検索に効く5つのスキーマもあわせて確認することをお勧めします。
robots.txtの確認・テスト方法
設定したrobots.txtは、必ず公式ツールで検証してから本番に反映させてください。
① ブラウザで直接確認
https://example.com/robots.txtにアクセスして、意図した内容が表示されているかを確認します。ステータスコードが200であること、Content-Typeがtext/plainであることを確認してください。
② Google Search Consoleのrobots.txtテスター
Google Search Consoleの「設定 → robots.txt」からテスターにアクセスできます。特定のURLに対してGooglebotがアクセス可能かどうかをシミュレートできます。robots.txtを変更した場合は必ずこのツールで検証してください。
③ Fetch as Googleでの確認
Search Consoleの「URL検査 → ライブテスト」で、特定のURLがGooglebotにどう見えるかを確認できます。robots.txtによるブロックがある場合は警告として表示されます。
また、コアウェブバイタルの改善やJSON-LDの設定と並行して、robots.txtが原因でクロールが制限されていないかを定期的に確認することをお勧めします。SEGOの診断ツールでも、robots.txtの基本的な設定項目を含むテクニカルSEOの状況を確認できます。
robots.txt設定のベストプラクティスまとめ
本記事で解説したrobots.txtの要点を整理します。
- robots.txtはクロール制御であり、インデックス制御ではない(インデックス制御はnoindexタグ)
- ファイルはサイトのルートURL直下(
https://example.com/robots.txt)に配置 - 主要ディレクティブ:User-agent・Disallow・Allow・Sitemap
- DisallowとAllowが競合する場合、より具体的(長い)パスが優先される
- 本番環境へのデプロイ前に、Disallow: / の設定が含まれていないか必ず確認する
- AI検索クローラー(GPTBot・ClaudeBotなど)もUser-agentで個別に制御可能
- Crawl-delayはGooglebotには無効(Search Consoleで調整する)
- 変更後はSearch ConsoleのRobots.txtテスターで必ず検証する
robots.txtのミスはサイト全体の検索流入に直結するリスクがあります。変更の際は必ずバックアップを取り、段階的にテストしてから本番反映を行ってください。
SEGOでは、robots.txtの設定を含むテクニカルSEOの状況をURLを入力するだけで無料診断できます。自社サイトの現状を把握したい方はぜひご活用ください。
robots.txtに関するよくある質問
robots.txtがないと検索順位は下がりますか?
robots.txtが存在しない場合、クローラーはサイト全体へのアクセスが許可されていると解釈します。それ自体が検索順位に直接悪影響を与えるわけではありません。ただし、管理画面や重複コンテンツがクロールされる場合は、クロールバジェットの無駄遣いにつながる可能性があります。小規模サイトでも最低限のrobots.txtを設置することを推奨します。
robots.txtでDisallowしたページはGoogleに表示されませんか?
表示される場合があります。robots.txtはクロールを制限しますが、インデックスは制御しません。外部サイトからリンクされているURLは、Googlebotがページ内容をクロールできなくてもURLとしてインデックスされ、検索結果に表示されることがあります。インデックスから確実に除外したい場合は、noindexメタタグの設定が必要です。
複数のサイトマップをrobots.txtに記述できますか?
記述できます。Sitemapディレクティブは複数行に分けて記述可能です。
Sitemap: https://example.com/sitemap.xml
Sitemap: https://example.com/sitemap-news.xml
Sitemap: https://example.com/sitemap-images.xml
ワイルドカードはrobots.txtで使えますか?
*(アスタリスク)と$(行末)が使用できます。*は任意の文字列にマッチし、$はURLの末尾を示します。
# /.phpで終わるURLをすべてDisallow
Disallow: /*.php$
# /tag/ を含むすべてのURLをDisallow
Disallow: /tag/*
ただし、ワイルドカードの解釈はクローラーによって若干異なる場合があります。重要なルールについては、シンプルなパス指定を優先することを推奨します。
HTTPSとHTTPでrobots.txtは別々に必要ですか?
プロトコル(HTTP/HTTPS)およびサブドメインが異なる場合は、それぞれ別のrobots.txtが必要です。https://example.com/robots.txtの設定はhttp://example.com/やhttps://www.example.com/には適用されません。HTTPSへの統一が完了している場合は通常1つで問題ありませんが、リダイレクト設定と合わせて確認してください。
