robots.txt 完全構文ガイド:
Disallow・Allow・Crawl-delay・ワイルドカード徹底解説
各章へクイックジャンプ:
robots.txtはシンプルなテキストファイルですが、構文の細かい仕様を正しく理解していないと、意図しないページのクロールを許可したり、逆に重要なページのクロールを遮断したりする設定ミスが発生します。本章では、すべてのディレクティブの仕様を実例つきで解説し、現場でよく見る設定ミスとその修正方法まで網羅します。
1. robots.txt の基本構造
ファイルの配置と取得方法
robots.txt は必ずサイトのルートドメインに /robots.txt として配置します。サブディレクトリには配置できません。Googlebotは https://example.com/robots.txt を自動的にチェックします。
また、複数のドメインを運営している場合、それぞれのドメインに個別の robots.txt が必要です(https://shop.example.com/robots.txt は https://example.com/robots.txt とは別)。
robots.txt の基本構文と「グループ」の概念
robots.txt は「グループ」と呼ばれる単位で設定を記述します。各グループは1つ以上の User-agent ディレクティブで始まり、続く Disallow / Allow ルールがそのエージェントに適用されます。
# =================================== # robots.txt の基本構造 # =================================== # グループ1:すべてのクローラーに適用 User-agent: * Disallow: /admin/ Disallow: /private/ Allow: /admin/public-page/ # グループ2:Googlebotに個別設定 User-agent: Googlebot Allow: /important-assets/ # グループ3:画像クローラーに個別設定 User-agent: Googlebot-Image Disallow: /no-image-crawl/ # サイトマップの場所を通知 Sitemap: https://example.com/sitemap.xml Sitemap: https://example.com/sitemap-images.xml
2. 各ディレクティブの完全解説
① User-agent:適用対象のクローラーを指定
User-agent ディレクティブは、続くルールを適用するクローラーを指定します。
| 記述方法 | 意味 |
|---|---|
User-agent: * | すべてのクローラーに適用(ワイルドカード) |
User-agent: Googlebot | Googlebotのみに適用 |
User-agent: OAI-SearchBot | OpenAIの検索用クローラーのみに適用 |
User-agent: GooglebotUser-agent: bingbot | GooglebotとBingbotの両方に適用 |
特定エージェントのルールは * より優先されるUser-agent: * でDisallowにしたパスでも、User-agent: Googlebot で別の設定があればGooglebotにはそちらが適用されます。特定エージェントの設定は常にワイルドカード設定より優先されます。
② Disallow:クロールを禁止するパスの指定
Disallow ディレクティブは、クローラーにアクセスを禁止するパスを指定します。
# ディレクトリ全体をブロック(末尾スラッシュは重要) Disallow: /admin/ # 特定ファイルをブロック Disallow: /private.html # ルート直下のすべてをブロック(サイト全体をブロック) Disallow: / # 何もブロックしない(すべて許可)= 空の Disallow Disallow: # クエリパラメータを含むURLをブロック Disallow: /search? # 特定拡張子のファイルをブロック Disallow: /*.pdf$
③ Allow:Disallow の例外を設定する
Allow ディレクティブは、Disallow で指定したパスの中の特定のURLへのアクセスを許可します。より具体的なパスのルールが優先されます。
User-agent: Googlebot # /private/ 以下をすべてブロック Disallow: /private/ # ただし /private/press-release/ だけは許可 Allow: /private/press-release/ # =================================== # ルール競合時の優先順位 # =================================== # より長い(具体的な)パスが優先される Disallow: / # サイト全体をブロック Allow: /public/ # /public/ は許可 # → /public/ 以下は許可される(Allow の方が具体的)
④ Crawl-delay:クロール間隔の制御
Crawl-delay は、クローラーがページを取得する間隔(秒数)を指定します。サーバーへの負荷が高い場合に使われることがありますが、Googlebotは Crawl-delay をサポートしていません。Google向けには不要URLの削減、サーバー応答改善、必要に応じた 503 / 429 の一時返却などで対処します。
# Bing系など一部クローラーでは Crawl-delay が解釈されることがある User-agent: bingbot Crawl-delay: 2 # Googlebotは Crawl-delay を処理しない User-agent: Googlebot Crawl-delay: 1 # Google向けには効果なし
⑤ Sitemap:サイトマップの場所を通知
Sitemap ディレクティブは、sitemap.xml の URL をクローラーに通知します。どの User-agent グループにも関係なく、ファイルのどこに記述しても有効です。複数のサイトマップがある場合は複数行記述できます。
User-agent: * Disallow: /admin/ # サイトマップの場所(絶対URLで記述) Sitemap: https://example.com/sitemap.xml Sitemap: https://example.com/sitemap-news.xml Sitemap: https://example.com/sitemap-images.xml
3. ワイルドカードの正しい使い方
* と $ の意味と使い分け
robots.txt では2種類のワイルドカードが使用できます:
*(任意の文字列)0文字以上の任意の文字にマッチします。
例:Disallow: /images/*.jpg
→ /images/photo.jpg や /images/sub/photo.jpg にマッチ
$(URLの末尾)URLの末尾を指定します。
例:Disallow: /*.pdf$
→ /doc.pdf にはマッチするが/doc.pdf?page=1 にはマッチしない
User-agent: * # クエリパラメータを含むURLをすべてブロック # (ECサイトのフィルター・ソートURL対策) Disallow: /*?* # 特定の拡張子ファイルをブロック Disallow: /*.pdf$ Disallow: /*.zip$ Disallow: /*.xlsx$ # /tmp/ または /temp/ 以下をブロック Disallow: /tmp/ Disallow: /temp/ # 特定パターンのURLをブロック(セッションID付きURL) Disallow: /*?session=* Disallow: /*&session=* # 開発・ステージング環境のパスをブロック Disallow: /staging/ Disallow: /dev/ Disallow: /api/ # APIエンドポイント
4. よくある設定ミスと修正方法
ミス① Disallow のパスに末尾スラッシュを忘れる
❌ 誤った設定
Disallow: /admin
robots.txt のパス一致は「先頭一致」です。そのため /admin と書くと、/admin/ だけでなく /administrator や /admin-panel にも一致してしまいます。
✅ 正しい設定
Disallow: /admin/
末尾スラッシュをつけることで「/admin/ ディレクトリ以下のみ」という意図が明確になります。
ミス② サイト全体を誤ってブロックしてしまう
❌ 危険な設定(サイト全体ブロック)
User-agent: * Disallow: /
開発中に一時的に設定した後、本番環境にそのままデプロイしてしまうケースが多発します。これは全ページのインデックスを停止させます。
ミス③ robots.txt が原因でCSSやJavaScriptがブロックされる
過去の慣習として /css/ や /js/ を Disallow にするケースがありましたが、現在の Google は CSS・JavaScript をレンダリングしてからインデックスします。これらをブロックすると、ページが正しくレンダリングされず、インデックス品質が低下します。
絶対にブロックしてはいけないパス/css/、/js/、/assets/(スタイルシート・スクリプト)、/_next/static/ などのレンダリング必須リソース——これらをブロックするとGooglebotがページを正しく描画できず、評価や理解に悪影響が出ます。
5. Next.js での robots.txt 実装方法
app/robots.ts を使った動的生成
Next.js の App Router では、app/robots.ts ファイルを作成することで robots.txt を動的に生成できます。
// app/robots.ts
import { MetadataRoute } from 'next';
export default function robots(): MetadataRoute.Robots {
const baseUrl = process.env.NEXT_PUBLIC_SITE_URL
|| 'https://example.com';
return {
rules: [
// すべてのクローラーに適用するデフォルトルール
{
userAgent: '*',
allow: '/',
disallow: [
'/admin/',
'/api/',
'/private/',
'/tmp/',
],
},
// OpenAI 学習用クローラーへの個別設定
{
userAgent: 'GPTBot',
allow: '/', // AI学習を許可する場合
// disallow: ['/'], // 禁止する場合はこちら
},
// OpenAI 検索用クローラーへの個別設定
{
userAgent: 'OAI-SearchBot',
allow: '/',
},
],
// サイトマップの場所を明示
sitemap: `${baseUrl}/sitemap.xml`,
};
}6. robots.txt 設定のチェックリスト
全5章を通して、クローラー制御とインデックス最適化の技術を体系的に学びましょう。
robots.txt の設定ミスを
自動で検出しましょう
AIOGeoScanは robots.txt の構文エラー・意図しないDisallow・sitemap.xmlとの矛盾・AIクローラーへの対応漏れを一括診断します。
今すぐ自社サイトを無料診断する