Robots.txt完全ガイド:検索エンジンクローラーを制御する
robots.txtファイルの作成方法と検索エンジンクローラーを効果的に管理する方法を学びます。

Robots.txtの役割と限界
robots.txtはウェブサイトのルートディレクトリに位置するテキストファイルで、検索エンジンクローラーにどのページをクロールするか案内します。1994年に制定されたRobots Exclusion Protocolの一部で、ウェブの初期から使用されてきた標準です。
https://example.com/robots.txt
しかし重要な点を明確にする必要があります:robots.txtは勧告事項です。きちんと作られた検索エンジンボットはこれを尊重しますが、悪意のあるボットやウェブスクレイパーはこれを無視する可能性があります。そのためrobots.txtをセキュリティツールとして使用してはいけません。機密データは必ず認証とアクセス制御で保護する必要があります。
クローラーがrobots.txtを処理する方法
検索エンジンクローラーがウェブサイトを訪問すると、まずrobots.txtを確認します。処理順序は次の通りです:
/robots.txtをリクエスト- ファイルがなければ → すべてのページのクロールを許可
- ファイルがあれば → ルールに従ってクロール
- 自分に該当するUser-agentブロックを探す
- 最も具体的なルールを適用
ルールマッチングで重要な点は、AllowとDisallowが同じパスに適用される場合、より具体的なルールが優先されるということです。同じ具体性ならAllowが優先されます。
文法詳細ガイド
基本ディレクティブ
User-agent: *
Disallow: /admin/
Allow: /admin/public/
Sitemap: https://example.com/sitemap.xml
Crawl-delay: 10
| ディレクティブ | 説明 | 例 |
|---|---|---|
| User-agent | 対象クローラーを指定(*はすべてのボット) | User-agent: Googlebot |
| Disallow | クロール禁止パス | Disallow: /private/ |
| Allow | クロール許可パス(Disallowの例外) | Allow: /private/open/ |
| Sitemap | サイトマップURL(絶対パス) | Sitemap: https://... |
| Crawl-delay | クロール間隔(秒)- 一部のボットのみサポート | Crawl-delay: 10 |
ワイルドカードとパス終端表示
robots.txtは制限的なパターンマッチングをサポートします:
*- すべての文字列(0個以上)$- パスの終端
# すべての.pdfファイルをブロック
Disallow: /*.pdf$
# クエリパラメータがあるURLをブロック
Disallow: /*?
# 特定のパラメータをブロック
Disallow: /*?sort=
Disallow: /*?filter=
# セッションIDを含むURLをブロック
Disallow: /*sessionid
# 特定ディレクトリのすべてのPHPファイルをブロック
Disallow: /scripts/*.php$
注意:ワイルドカードはパスマッチングにのみ使用されます。正規表現はサポートされていません。
主要検索エンジンおよびAIクローラー
ウェブサイトを訪問する主要ボットを知っておくと有用です:
検索エンジンボット
| User-agent | サービス | 説明 |
|---|---|---|
| Googlebot | Google検索 | ウェブ検索用 |
| Googlebot-Image | Google画像 | 画像検索用 |
| Bingbot | Bing | Microsoft検索 |
| Yeti | Naver | Naver検索 |
| Baiduspider | Baidu | 中国検索 |
| DuckDuckBot | DuckDuckGo | プライバシー検索 |
AIクローラー(2024年以降急増)
| User-agent | サービス | 説明 |
|---|---|---|
| GPTBot | OpenAI | ChatGPT学習データ |
| ChatGPT-User | OpenAI | ChatGPTブラウジング機能 |
| CCBot | Common Crawl | オープンデータセット収集 |
| anthropic-ai | Anthropic | Claude学習データ |
| Claude-Web | Anthropic | Claudeウェブ検索 |
| Google-Extended | Gemini学習データ |
AI学習用クローラーをブロックするには:
# AI学習クローラーをブロック
User-agent: GPTBot
Disallow: /
User-agent: CCBot
Disallow: /
User-agent: Google-Extended
Disallow: /
実践例:状況別設定
全体許可(デフォルト)
User-agent: *
Allow: /
全体ブロック(開発/ステージング環境)
User-agent: *
Disallow: /
一般ウェブサイト
User-agent: *
Allow: /
# 管理者エリア
Disallow: /admin/
Disallow: /wp-admin/
Disallow: /dashboard/
# ユーザー個人エリア
Disallow: /account/
Disallow: /profile/
Disallow: /my-*/
# 検索結果(重複コンテンツ防止)
Disallow: /search/
Disallow: /*?q=
Disallow: /*?s=
# 一時/開発ファイル
Disallow: /tmp/
Disallow: /staging/
Disallow: /_*/
# サイトマップ
Sitemap: https://example.com/sitemap.xml
Eコマースサイト
User-agent: *
Allow: /
# 購入プロセス(クロール不要)
Disallow: /cart/
Disallow: /checkout/
Disallow: /order/
# ユーザーアカウント
Disallow: /my-account/
Disallow: /wishlist/
# フィルタリング/ソートされた商品リスト(重複防止)
Disallow: /*?sort=
Disallow: /*?filter=
Disallow: /*?color=
Disallow: /*?size=
Disallow: /*&
# 内部検索
Disallow: /search/
# 価格比較ボットを許可(オプション)
User-agent: PriceSpider
Allow: /
Sitemap: https://example.com/sitemap.xml
Sitemap: https://example.com/product-sitemap.xml
ブログ/メディアサイト
User-agent: *
Allow: /
# タグ/カテゴリページ(オプション - 重複コンテンツの懸念がある場合)
Disallow: /tag/
Disallow: /category/page/
# 著者アーカイブ
Disallow: /author/
# 添付ファイルページ
Disallow: /attachment/
# メディアファイルへの直接アクセス
Allow: /wp-content/uploads/
Sitemap: https://example.com/sitemap.xml
Sitemap: https://example.com/news-sitemap.xml
よくある間違いと解決策
1. スラッシュの欠落
# 間違い - "admin"で始まるすべてのパスをブロック
Disallow: admin
# 正しい - /admin/ディレクトリのみをブロック
Disallow: /admin/
2. 大文字小文字のエラー
ディレクティブ名は大文字小文字を区別します:
# 間違い
user-agent: *
disallow: /admin/
# 正しい
User-agent: *
Disallow: /admin/
3. CSS/JSブロックによるレンダリング問題
2015年からGoogleはページをレンダリングしてコンテンツを理解しています。CSSとJavaScriptをブロックすると、Googleがページを正しく理解できない可能性があります:
# 間違い - レンダリングリソースをブロック
Disallow: /css/
Disallow: /js/
Disallow: *.css$
Disallow: *.js$
# 正しい - 静的リソースを許可
Allow: /css/
Allow: /js/
Allow: /images/
4. サイト全体を誤ってブロック
# 非常に危険!サイト全体をブロック
User-agent: *
Disallow: /
この設定を本番環境にデプロイすると、検索結果から消える可能性があります。
robots.txt vs meta robots vs X-Robots-Tag
3つの方法は異なる用途と優先順位を持ちます:
| 方法 | 場所 | 用途 | クロール | インデックス |
|---|---|---|---|---|
| robots.txt | ルートディレクトリ | クロール制御 | O | X |
| meta robots | HTML head | インデックス制御 | X | O |
| X-Robots-Tag | HTTPヘッダー | 非HTMLリソース | X | O |
重要:robots.txtでブロックしてもページが検索結果に表示される可能性があります。他のサイトからリンクされるとGoogleはURLを知ることになり、コンテンツなしでURLだけを表示できます。
検索結果から完全に削除するには:
<!-- 該当ページのheadに追加 -->
<meta name="robots" content="noindex, nofollow">
robots.txtの検証方法
Google Search Console
- Search Consoleにアクセス
- 左メニューから「設定」→「robots.txt」
- 「ライブテスト」機能でURLブロック状況を確認
コマンドラインで確認
# 現在のrobots.txt内容を確認
curl https://example.com/robots.txt
# 特定ボット視点でシミュレーション(Python必要)
pip install robotexclusionrulesparser
python -c "
import robotexclusionrulesparser as rerp
rp = rerp.RobotExclusionRulesParser()
rp.fetch('https://example.com/robots.txt')
print(rp.is_allowed('Googlebot', '/admin/'))
"
クロールバジェット最適化
大規模サイトでは「クロールバジェット」(Crawl Budget)が重要です。これはGoogleがサイトに割り当てるクロールリソースの量です。robots.txtで不要なページをブロックすると、重要なページがより頻繁にクロールされます。
クロールバジェットを浪費するページ:
- フィルタリング/ソートされた商品リスト
- セッションIDを含むURL
- 無限カレンダー
- 内部検索結果
- 印刷用ページ
Toolypet Robots.txt Generator
複雑なrobots.txtも簡単に生成できます:
- ブロックするパスパターンを選択
- 特定ボットのブロック設定
- サイトマップURLを入力
- プレビューで確認
- 完成したファイルをダウンロード
適切なrobots.txtでクロールバジェットを効率的に使用し、重要なコンテンツが検索結果にしっかり表示されるようにしましょう。