noindex の正しい使い方 — 検索結果から確実に外す
noindex は、指定したページを検索結果に表示させないための指示です。方法は 2 つあり、HTML の meta robots タグと、PDF や画像など HTML 以外にも使える X-Robots-Tag レスポンスヘッダーがあります。最大の注意点は、robots.txt の Disallow は noindex ではないこと。消したいページを Disallow で塞ぐと、かえって URL が検索結果に残り続けることがあります。
noindex とは何ですか?
noindex は、そのページを検索結果に表示させないよう検索エンジンに伝える指示です。ページ自体は残り、リンクも普通にたどれますが、検索結果の一覧には出なくなります。指定方法は HTML の meta robots タグか、X-Robots-Tag レスポンスヘッダーの 2 つです。noindex を認識させるには、まずそのページがクロールされる必要があります。
サイトの中には、存在してほしいが検索結果には出したくないページがあります。購入完了ページや サイト内検索の結果ページなどです。こうしたページを検索から外すための指示が noindex です。ページを削除する わけではないので、URL を知っている人は普通に開けますし、リンクからもたどれます。変わるのは検索結果の一覧に出るかどうかの 1 点だけです。
ここで最初に押さえておくべき前提があります。noindex は、そのページがクロールされて初めて効きます。 検索エンジンはページを読みに来て、その中に書かれた noindex を見つけて「では一覧から外そう」と判断します。 つまり「読ませない」ことと「検索に出さない」ことは、後で見るとおり別の操作です。ここを取り違えると、 消したいページがかえって消えなくなります。
noindex を指定する方法は?
meta robots タグと X-Robots-Tag ヘッダーの 2 つです。HTML ページなら head 内に meta robots で書くのが簡単で、PDF や画像など HTML 以外のファイルには X-Robots-Tag レスポンスヘッダーを使います。どちらも意味は同じで、そのページを検索結果に出さないよう指示します。両方を同時に付ける必要はなく、対象に合わせてどちらかを選びます。
1 つ目は meta robots タグです。HTML ページの <head> の中に 1 行書くだけで、 最も手軽な方法です。特定の検索エンジンだけに指示したい場合は、name="robots" の代わりにname="googlebot" のようにクローラー名を指定します。
<!-- HTML ページ: head 内に置く。このページは検索結果に出さない -->
<head>
<meta name="robots" content="noindex">
</head>
<!-- 特定の検索エンジンだけに指示するなら name を変える -->
<meta name="googlebot" content="noindex">2 つ目は X-Robots-Tag レスポンスヘッダーです。こちらは HTTP ヘッダーで指示するため、HTML ではない PDF・画像・その他のファイルにも使えるのが決定的な利点です。meta タグは HTML の head にしか書けませんが、ヘッダーならサーバー側でファイル種別ごとにまとめて付けられます。
# PDF・画像など HTML 以外にも使える(レスポンスヘッダーで指示)
X-Robots-Tag: noindex
# 例: Apache で .pdf をまとめて noindex にする
<Files ~ "\.pdf$">
Header set X-Robots-Tag "noindex"
</Files>両方を同時に付ける必要はありません。HTML ページなら meta robots、PDF などの非 HTML ファイルなら X-Robots-Tag、と対象に合わせてどちらか一方を選べば十分です。
robots.txt の Disallow とはどう違いますか?
robots.txt の Disallow は「クロールするな」、noindex は「検索結果に出すな」で、意味がまったく違います。Disallow はページを読みに行くこと自体を止める指示で、インデックス登録を止める指示ではありません。両者を混同すると、消したいはずのページが検索結果に残るなど、意図と逆の結果になります。
ここが本記事で最も重要な区別です。robots.txt の Disallow と noindex は、名前も目的も似て見えますが、効く対象がまったく違います。
| 指示 | 何を止めるか | 検索結果への効果 |
|---|---|---|
Disallow | クロール(ページを読むこと) | URL だけ残ることがある |
noindex | インデックス(検索結果への掲載) | 確実に一覧から消える |
| 両方を同時に指定 | 読めないので noindex に気づけない | 消えず残ることがある(NG) |
Disallow は「このページを読みに来るな」という指示で、インデックス登録を止める指示では ありません。一方 noindex は「検索結果に出すな」という指示です。クロール制御とインデックス制御は別のレイヤーだと理解しておくと、次の落とし穴を避けられます。
noindex したいページを Disallow してはいけないのはなぜ?
noindex にしたいページを Disallow で塞いではいけません。クローラーがページを読めなくなり、中の noindex タグに気づけないからです。その結果、外部リンク経由で URL だけがインデックスされ、検索結果に残り続けることがあります。確実に消すには、Disallow せずクロールを許可したうえで noindex を付けます。
「検索から消したいのだから、robots.txt で塞げばいい」——これが最もよくある事故です。Disallow で塞ぐと、 クローラーはそのページを読みに行けません。読めないということは、ページの <head> に書いた noindex にも気づけないということです。
# robots.txt ── これは NG。
# /thanks を塞ぐと、クローラーは中の noindex を読めない
User-agent: *
Disallow: /thanks
# /thanks/complete.html の head には noindex があるのに、
# クロール自体が禁止されているので、いつまでも気づかれないさらに厄介なのは、Disallow で塞いだページでも、外部からリンクされていれば URL 自体はインデックスされ得る点です。検索エンジンは中身を読めないので、タイトルも説明も無い状態で URL だけが検索結果に載る、ということが 起こります。消したいはずが、かえって中途半端な形で残ってしまうわけです。
どんなページに noindex を使いますか?
検索結果に載せる価値がなく、載ると邪魔になるページに使います。具体的には、購入完了などのサンクスページ、サイト内検索の結果ページ、内容が重複するページ、印刷用ページ、ログインが必要な管理画面などです。ユーザーが検索から直接来ても意味がない、あるいは来てほしくないページが対象になります。
noindex が向くのは、ユーザーが検索から直接たどり着いても意味がない、あるいは来てほしくないページです。 代表的な用途を挙げます。
- サンクスページ — 購入完了・問い合わせ完了など、フォーム送信後にだけ意味を持つページ
- サイト内検索の結果ページ — 無数の URL が生成され、放置すると薄いページが量産される
- 重複ページ — 内容が他と重なるもの(正規 URL を 1 つに束ねるなら canonical の方が適する場合もある)
- 印刷用ページ — 通常ページと同じ内容を別レイアウトで持つもの
- 管理画面・会員専用ページ — ログインが前提で、検索から来ても入れないページ
なお、重複の解消が目的なら noindex より canonical が適することがあります。 canonical は「この内容の正規 URL はこちら」と評価を 1 つに集約する仕組みで、ページを検索から消したいわけではない 場合に向きます。「検索から消したい」なら noindex、「評価を 1 本化したい」なら canonical、と 目的で選び分けます。
noindex, follow はどういう意味ですか?
noindex, follow は「このページは検索結果に出さないが、中のリンクはたどってよい」という指定です。noindex が本文の非掲載を、follow がリンク先へのクロール継続を意味します。ページ自体は見せたくないがリンク先には評価やクロールを届けたい、という場合に使います。follow は既定値なので、noindex だけでも通常はリンクをたどります。
content にはカンマ区切りで複数の値を書けます。よく使うのが noindex, follow の組み合わせです。noindex が「このページは検索結果に出さない」、follow が「ページ内のリンクはたどってよい」を意味します。ページ自体は非掲載にしつつ、そこから張ったリンク先にはクロールや評価を 届けたい、というときに使います。
follow は既定値なので、noindex だけを書いても通常はリンクをたどります。明示的に noindex, nofollow と 書けばリンクもたどらせなくなりますが、ページを消しつつサイト内の巡回だけは維持したい場面では、意図を明確にする意味で noindex, follow と書いておくのが無難です。
noindex が効いているかどう確認しますか?
対象ページを実際に取得して、meta robots または X-Robots-Tag に noindex が入っているかを確認します。ブラウザの検証ツールで head を見るか、レスポンスヘッダーを調べます。反映を確かめるには Search Console の URL 検査が確実で、インデックス状況と実際に読まれた noindex 指示の両方を確認できます。
確認の基本は「実際にそのページを取得して、noindex が付いているか目で見る」ことです。HTML ページなら ブラウザの検証ツールで <head> の中の meta robots を確認します。PDF などファイルの場合は、レスポンス ヘッダーに X-Robots-Tag: noindex が含まれているかを調べます。
反映されたかどうかまで確かめたいときは、Search Console の URL 検査が確実です。実際に Google が読み取った noindex 指示と、現在のインデックス状況の両方を確認できます。ここでも前提は同じで、Disallow で塞いでいると Google はページを読めず、URL 検査でも noindex を確認できません。まず読ませ、noindex を認識させる——この順序は 最後まで変わりません。