noindexとは?canonicalとの使い分けとインデックス制御の基本
三橋竜彰・
noindexとは、そのページを検索結果に出さないよう検索エンジンに伝える指定です。HTMLのmetaタグかHTTPヘッダーで指定します。
似た働きに見えるものにcanonicalとrobots.txtがありますが、3つは役割が違います。取り違えると「出したいページが消える」「消したいページが残る」という逆の結果になります。この記事では違いと使い分けを整理します。
3つの指定は、止める場所が違う
まず全体像です。
| 指定 | 何を伝えるか | 止まる場所 |
|---|---|---|
| noindex | このページを検索結果に出さないでほしい | インデックス(登録) |
| canonical | 内容が同じページが複数ある。正はこちら | 評価の集約先 |
| robots.txt の Disallow | このURLを取得しないでほしい | クロール(取得) |
noindexとrobots.txtを併用してはいけない
最も多い誤りがこれです。消したいページに noindex を書き、同時に robots.txt でも Disallow にするという組み合わせです。
一見すると二重に確実そうですが、逆になります。Disallowでページの取得を止めると、検索エンジンはそのページのHTMLを読めません。HTMLを読めなければ、そこに書いてあるnoindexも読めません。結果として、noindexが伝わらないまま外部リンク経由でURLだけが登録されることがあります。
検索結果から消したいなら、robots.txtでは止めず、クロールさせたうえでnoindexを読ませてください。消えたことを確認したあとでDisallowに切り替えるなら問題ありません。順番の問題です。
canonicalは「消す」ための指定ではない
canonicalは、内容が実質同じページが複数のURLで存在するときに、どれを正とするかを伝えるものです。パラメータ付きURL、印刷用ページ、http/httpsの重複などが典型です。
ここで押さえておきたいのは、canonicalがあくまで指示ではなくヒントとして扱われる点です。指定しても、検索エンジンが別のURLを正と判断することがあります。確実に検索結果から外したいならnoindexを使います。
「重複を整理したい」ならcanonical、「出したくない」ならnoindex。目的が違うので、どちらか迷ったら「このページは検索結果に出てよいか」で判断できます。noindexを使う場面
実際に使うのは、次のようなページです。
- 会員向け・ログイン後のページ
- 申し込み完了などのサンキューページ
- サイト内検索の結果ページ
- 内容の薄いタグ・アーカイブページ
- テスト環境・ステージング環境
本サイトでも、ログインページには noindex を指定しています。一方で、記事ページには一切使っていません。書いた記事を検索結果に出さない理由がないからです。
意図せずnoindexが入っているとき
「インデックスされない」という相談で、原因がnoindexだったケースは珍しくありません。自分で書いた覚えがなくても入ることがあります。
- WordPressの「検索エンジンがサイトをインデックスしないようにする」にチェックが入ったまま公開した
- SEOプラグインの投稿タイプ設定で、カテゴリやタグが一括でnoindexになっている
- ステージング環境の設定をそのまま本番へ移行した
WordPress特有の設定漏れはブログがインデックスされない|新規ブログ・WordPress・AI記事の場合に詳しくまとめています。原因がnoindexなのか別のところにあるのかを先に切り分けたい場合は、インデックスされない原因の切り分け方から読むほうが早く進みます。
AIクローラーには別の指定が要る
ここは混同されやすい点です。noindexは検索エンジンのインデックスに対する指定であって、AIによる学習や参照を止めるものではありません。
AIのクローラーを制御したい場合は、robots.txtでユーザーエージェントごとに指定する形になります。GPTBotやGoogle-Extendedなどが対象です。具体的な書き方はGPTBotの許可・拒否設定|robots.txtでの制御方法にまとめました。
検索結果に出したくないページと、AIに読ませたくないページは、必ずしも同じではありません。分けて考えてください。設定したあとの確認
書いただけでは終わりません。運営者は次の順で確認しています。
- 本番のHTMLに実際に出ているか:公開後のページを取得して、metaタグが含まれているかを見ます
- Search Consoleで反映を待つ:noindexは即時ではなく、次にクロールされたときに反映されます
- 意図しないページに入っていないか:一覧で確認し、記事ページに紛れ込んでいないかを見ます
1つ目が抜けやすいところです。ローカルやプレビューで正しくても、ビルドや配信の途中で欠けることがあります。書いた事実と、本番に出ている事実は別です。
よくある質問
noindexとは何ですか?
そのページを検索結果に出さないよう検索エンジンに伝える指定です。HTMLのmetaタグかHTTPヘッダーで指定します。ページの取得(クロール)は行われたうえで、インデックス(登録)の段階で除外されます。
noindexとrobots.txtのDisallowはどちらを使うべきですか?
検索結果から消したいならnoindexです。両方を同時に指定してはいけません。Disallowでページの取得を止めると検索エンジンがHTMLを読めなくなり、そこに書いたnoindexも読めなくなります。結果としてnoindexが伝わらないまま、外部リンク経由でURLだけが登録されることがあります。
noindexとcanonicalの違いは何ですか?
目的が違います。canonicalは内容が同じページが複数あるときに、どれを正とするかを伝えるものです。noindexは検索結果に出さないための指定です。また、canonicalは指示ではなくヒントとして扱われるため、確実に検索結果から外したい場合はnoindexを使います。
noindexにしたのに検索結果に残っています。
noindexは即時に反映されるものではなく、次にそのページがクロールされたときに反映されます。またrobots.txtでDisallowにしていると、そもそもHTMLが読まれずnoindexが伝わりません。Disallowを外し、クロールさせたうえでnoindexを読ませてください。
noindexを指定すればAIに学習されなくなりますか?
なりません。noindexは検索エンジンのインデックスに対する指定であり、AIによる学習や参照を止めるものではありません。AIのクローラーを制御したい場合は、robots.txtでユーザーエージェントごとに指定する形になります。検索結果に出したくないページとAIに読ませたくないページは、必ずしも同じではありません。
まとめ
- noindexは検索結果に出さない指定。取得はされ、登録の段階で除外される
- canonicalは重複したURLの正を伝えるヒント。消すための指定ではない
- noindexとDisallowを併用しない。取得を止めるとnoindexが読まれない
- noindexはAIの学習を止めない。AIクローラーはrobots.txtで別に指定する
- 書いたあとは、本番のHTMLに実際に出ているかを確認する
「出したくない」のか「重複を整理したい」のか「取得させたくない」のか。目的をひとつに決めれば、使う指定は自動的に決まります。