Google にページをインデックスしないよう指示する 2 つの方法:HTML 内の robots メタタグ、または HTTP レスポンスヘッダの X-Robots-Tag。どちらも同じ役割を果たします。互換性はありません。正しい方法の選択は、ファイルの種類(HTML か PDF か画像か)、編集できる場所(テンプレートかサーバ設定か)、スケール対応の必要性(1 ページか数万ページか)に基づきます。
重要なポイント:robots メタタグと X-Robots-Tag は同じ役割を果たしますが、ヘッダーバージョンは PDF、画像、その他の HTML 以外のファイルに noindex を指定する唯一の方法です。The robots meta tag and the X-Robots-Tag do the same job; the header version is the only way to noindex PDFs, images, and other non-HTML files.
2 つのメカニズムを 1 文ずつで説明
robots メタタグ:HTML ドキュメントの <head> 内の <meta name="robots" content="noindex, nofollow">。HTML ページ上でのみ機能します。PDF やファイル、JSON メタデータに相当するものがないため、画像では機能しません。ページテンプレート経由で簡単に追加できます。
X-Robots-Tag: X-Robots-Tag: noindex, nofollow は HTTP レスポンスヘッダーです。サーバーが返すあらゆるリソースタイプ (HTML、PDF、画像、動画、JSON など) に機能します。サーバー (Apache、Nginx、Vercel edge headers、Cloudflare Workers) または フレームワークのレスポンス API 経由で設定します。Vercel edge headers, Cloudflare Workers) or via the framework's response API.
robots メタタグが正しい選択である場合
- 単一ページの除外:noindex にしたい特定のページ。そのページのテンプレートにメタタグを追加し、変更をデプロイします。
- テンプレート制御されたページ:noindex判定がページタイプごとに行われる場合(例:すべての/thank-you/ページをnoindexにする)。そのページが使用するレイアウトテンプレート内にメタタグを追加します。
- 動的判定:noindexがランタイムデータに依存する場合(例:200語未満のページをnoindexにする)。メタタグはテンプレート内で条件付きでレンダリングされます。
- サーバー設定へのアクセス権がない場合:共有ホスティング、ロックダウンされたCMS、テンプレートは編集できるがhtaccessは編集できないエージェンシーのデプロイ。メタタグが唯一の選択肢です。
X-Robots-Tagが最適な選択肢である場合
- 非HTMLリソース:PDF、画像、JSONエンドポイント、サイトマップ。PDFにメタタグを追加することはできません。HTTP応答のX-Robots-Tagが唯一の方法です。
- パターンベースの除外:「/admin/*配下のすべてをnoindexにする」または「すべての.pdfファイルをnoindexにする」。サーバーで一度設定すれば、マッチするすべてのURLに永遠に適用されます。200個のテンプレートを編集するよりもはるかにクリーンです。
- 大規模な除外:インデックスされるべきではない動的生成URL10,000個。単一のNginxロケーションブロックがテンプレートレベルの条件分岐に勝ります。
- 多層防御が必要な場合:サーバーのX-Robots-Tagとテンプレートのrobotsメタを組み合わせます。どちらかのレイヤーがnoindexをキャッチしますが、両方のレイヤーはテンプレートバグがページを誤ってインデックスに戻す可能性をなくします。
両方が設定できるもの
両メカニズムは同じディレクティブセットを受け入れます。最も一般的なもの: noindex (インデックスしない)、nofollow (このページからのリンクをフォローしない)、none (= noindex, nofollow)、noarchive (キャッシュ版を表示しない)、nosnippet (SERP にスニペットを表示しない)、max-snippet:N (スニペット長を制限)、max-image-preview:standard|large|none (AI Overviews の画像プレビューを制御、2026年の GEO 業務に関連)、max-video-preview:N (動画プレビュー長を制限)、unavailable_after:date (指定日後に自動的に noindex にする)。
Google は、どのメカニズムが指令を配信するかに関わらず、同じ指令を読み込みます。メカニズムの選択はスケールとリソースタイプについてのもので、指令のサポートについてではありません。
一般的なプラットフォームで X-Robots-Tag を設定する方法
Vercel (vercel.json)
source パターンと X-Robots-Tag の values エントリを持つ [[headers]] ブロックを使用します。例: [[headers]] source = "/admin/(.*)" [[headers.values]] X-Robots-Tag = "noindex, nofollow"。パターンにマッチするすべての URL に適用されます。
Netlify (netlify.toml)
for パス glob と values.X-Robots-Tag が設定された [[headers]] ブロックを使用します。例: [[headers]] for = "/admin/*" [headers.values] X-Robots-Tag = "noindex, nofollow"。
Apache (.htaccess)
ファイルパターンマッチングには <FilesMatch "\.pdf$"> Header set X-Robots-Tag "noindex, nofollow" </FilesMatch> を使用します。またはパスマッチングには <Location /admin> Header set X-Robots-Tag "noindex, nofollow" </Location> を使用します。
Nginx
server ブロック内に location ~ /admin/ { add_header X-Robots-Tag "noindex, nofollow"; } を記述します。location ~ は正規表現でマッチし、プレフィックスのみのマッチングには location ^~ を使用します。
Cloudflare Workers / エッジ
ワーカースクリプトでレスポンスヘッダーを変更します: response.headers.set('X-Robots-Tag', 'noindex, nofollow')。オリジンサーバーが簡単にヘッダーを出力できないサイトに便利です。
ヘッダーが設定されていることの確認
curl -I https://example.com/page はX-Robots-Tagを含むすべてのレスポンスヘッダーを返します。出力内のX-Robots-Tagの行を探してください。見つからない場合、ヘッダーは設定されていません。
Search Console検証の場合: URL検査ツールは、メタタグとHTTPヘッダーの両方からGoogleが取得したディレクティブを表示します。どちらのレイヤーもnoindexを設定すれば、Googleは何もインデックスしません。CDNの設定ミスがヘッダーを無言のうちに削除する可能性があるため、両方のレイヤーをチェックする価値があります。
多層防御パターン
最も強力な本番環境セットアップは両方を使用します。パターン(例:/admin/*)に対するサーバーレベルのX-Robots-Tagと、同じページに対するテンプレートレベルのメタrobotsを<head>に配置します。2つのレイヤーがあれば、テンプレートのバグまたはCDNの設定ミスによって誤ってプライベートであるべきページがインデックスされるのを防ぐことができません。
このサイトのadminセクションはこのように設定されています: vercel.jsonが/admin/*に対してX-Robots-Tag: noindex, nofollowを設定し、AdminLayoutテンプレートが<meta name="robots" content="noindex, nofollow">をheadに出力します。完全な備え。
よくある間違い
- robots.txtでブロックされているページにnoindexを追加する。robots.txtのDisallowはGooglebotがページを全く取得するのを防ぐため、noindexディレクティブを見ません。ページは他の場所でURLを見たもののフェッチできないため、スニペットなしでインデックスされる可能性があります。Disallowルールを削除して、botがフェッチして noindexを見られるようにしてください。
- JavaScript でレンダリングされた HTML での meta タグ経由での noindex 設定。一部のボットは JS を実行しますが、実行しないボットもあります。安全な方法はサーバーサイドレンダリングで noindex meta タグを出力する、または JS 実行を必要としない HTTP ヘッダーの X-Robots-Tag を使用することです。
- バックリンクを持つページに noindex を設定する。Google は noindex を尊重しますが、それらのバックリンクからのリンクエクイティは無駄になります。関連する URL に 301 リダイレクトしてエクイティを吸収させる方が良いです。
- X-Robots-Tag がサーバーごとではなく、レスポンスごとであることを忘れる。CDN キャッシュヒット時にはカスタムヘッダーがストリップされることがあります。デプロイ後に curl で検証してください。
まとめ
robots meta タグ:ページごと、HTML内、テンプレートレベルで編集。X-Robots-Tag:レスポンスごと、HTTP ヘッダー内、サーバーレベルで編集。HTML には両方が機能します。非 HTML には X-Robots-Tag のみが機能します。noindex が重要な場合は両方を使用してください。
関連資料:410 対 404 は削除ケース(URL が消える場合)をカバー。301 対 302 対 307 対 308 はリダイレクトケース(URL が移動する場合)をカバー。noindex とともに、URL に対して Google に何をすべきかを伝える 3 つの主要なツールです。
よくある質問
X-Robots-Tag と robots メタタグの違いは何ですか?
どちらもインデックス処理を制御しますが、robots メタタグはページの HTML head に配置され、X-Robots-Tag は HTTP ヘッダーとして送信されます。ヘッダー版は PDF や画像などの非 HTML ファイルを制御できますが、メタタグではできません。noindex や nofollow など同じディレクティブをサポートしています。
メタタグの代わりに X-Robots-Tag を使うべきはいつですか?
PDF や画像などの非 HTML ファイルのインデックス処理を制御する必要がある場合、または多数の URL にわたってサーバーレベルでディレクティブを設定したい場合は、X-Robots-Tag を使用してください。個別の HTML ページについて、head の編集が簡単な場合はメタタグを使用してください。
X-Robots-Tag は PDF をインデックス除外できますか?
はい、これが主な利点です。robots メタタグは PDF 内に配置することはできませんが、X-Robots-Tag HTTP ヘッダーは PDF、画像、または任意の非 HTML ファイルに noindex を適用できます。ドキュメントを検索結果から除外する正しい方法です。
robots.txtはnoinexと同じ機能を果たしていますか?
いいえ。robots.txtはクローリングをブロックします。noinexはインデックスをブロックします。robots.txtでブロックされたページは、クロールされなくても検索結果に表示される可能性があります。ページをインデックスから削除するには、クロールさせてnoinexを提供してください。robots.txtでブロックしないでください。
