Toolypet
Back to Blog
SEO

Robots.txt完全ガイド:検索エンジンクローラーを制御する

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

Toolypet Team4 min read
Robots.txt完全ガイド:検索エンジンクローラーを制御する

Robots.txtの役割と限界

robots.txtはウェブサイトのルートディレクトリに位置するテキストファイルで、検索エンジンクローラーにどのページをクロールするか案内します。1994年に制定されたRobots Exclusion Protocolの一部で、ウェブの初期から使用されてきた標準です。

https://example.com/robots.txt

しかし重要な点を明確にする必要があります:robots.txtは勧告事項です。きちんと作られた検索エンジンボットはこれを尊重しますが、悪意のあるボットやウェブスクレイパーはこれを無視する可能性があります。そのためrobots.txtをセキュリティツールとして使用してはいけません。機密データは必ず認証とアクセス制御で保護する必要があります。

クローラーがrobots.txtを処理する方法

検索エンジンクローラーがウェブサイトを訪問すると、まずrobots.txtを確認します。処理順序は次の通りです:

  1. /robots.txtをリクエスト
  2. ファイルがなければ → すべてのページのクロールを許可
  3. ファイルがあれば → ルールに従ってクロール
  4. 自分に該当するUser-agentブロックを探す
  5. 最も具体的なルールを適用

ルールマッチングで重要な点は、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サービス説明
GooglebotGoogle検索ウェブ検索用
Googlebot-ImageGoogle画像画像検索用
BingbotBingMicrosoft検索
YetiNaverNaver検索
BaiduspiderBaidu中国検索
DuckDuckBotDuckDuckGoプライバシー検索

AIクローラー(2024年以降急増)

User-agentサービス説明
GPTBotOpenAIChatGPT学習データ
ChatGPT-UserOpenAIChatGPTブラウジング機能
CCBotCommon Crawlオープンデータセット収集
anthropic-aiAnthropicClaude学習データ
Claude-WebAnthropicClaudeウェブ検索
Google-ExtendedGoogleGemini学習データ

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ルートディレクトリクロール制御OX
meta robotsHTML headインデックス制御XO
X-Robots-TagHTTPヘッダー非HTMLリソースXO

重要:robots.txtでブロックしてもページが検索結果に表示される可能性があります。他のサイトからリンクされるとGoogleはURLを知ることになり、コンテンツなしでURLだけを表示できます。

検索結果から完全に削除するには:

<!-- 該当ページのheadに追加 -->
<meta name="robots" content="noindex, nofollow">

robots.txtの検証方法

Google Search Console

  1. Search Consoleにアクセス
  2. 左メニューから「設定」→「robots.txt」
  3. 「ライブテスト」機能で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も簡単に生成できます:

  1. ブロックするパスパターンを選択
  2. 特定ボットのブロック設定
  3. サイトマップURLを入力
  4. プレビューで確認
  5. 完成したファイルをダウンロード

適切なrobots.txtでクロールバジェットを効率的に使用し、重要なコンテンツが検索結果にしっかり表示されるようにしましょう。

SEORobots.txtCrawlerSearch Engine