Next.jsでrobots.txt・noindex・canonicalをどう使い分けるか:実務チェックリスト
Next.jsサイトで何をGoogleにインデックスさせるかを制御するための実務チェックリスト。robots.txtはクロール制御、noindexは除外、canonicalは重複統合に使い分けます。
目次
Next.jsで、間違ったページをどうやってインデックスさせないようにする?
1分要約
robots.txtはクロールを止めるもの。インデックスを直接消すものではない。noindexは「このページは検索結果に出さない」の直接シグナル。canonicalは、重複セットの代表URLをGoogleに伝えるためのもの。
どんな人向けか
- フィルタページ、検索結果ページ、パラメータURL、stagingっぽいパスがある Next.js / Vercel サイト
- 本物のコンテンツを壊さずに、インデックスの無駄を減らしたいチーム
結論
道具は役割で使い分ける。
- Googleにそのパスを見に来てほしくないなら
robots.txt - クロールはしていいが検索結果には出したくないなら
noindex - 同じ内容のURLが複数あるなら、canonical と リダイレクト / URL正規化 を使う
robots.txt を deindex ボタンだと思わないこと。Googleがページをクロールできないと、noindex を見られないことがある。
解説
ここを混同すると、インデックスのノイズが増える。
robots.txtはクロールのゲートnoindexはインデックスのゲートcanonicalは統合のシグナル
それぞれ役割が違う。
- private / staging のパス
- 単独価値が低い検索ページやフィルタページ
- tracking params、末尾スラッシュ、locale drift、rewrite で増えた重複URL
ありがちなミスは、robots でブロックしておいて、まだ検索結果に出ると困る、というやつ。
実務ガイド
Step 1: ページを分類する
まず、どの箱に入るかを決める。
- 公開してインデックスしたい
- クロールはしていいが、インデックスはしたくない
- ほかのページの重複・派生
- private / staging 専用
Step 2: 制御方法を選ぶ
判断基準はこれ。
- 公開ページ: クロール許可、自己参照canonical、sitemapに掲載
- 重複ページ: 正規URLへリダイレクト。整理中だけ一時的に
noindexを使うのはあり - クロールはしていいがインデックス不要: クロール許可、
noindex、sitemapから除外 - private / staging: 認証で守る。robots はあくまで補助
Step 3: Next.js で実装する
ページ単位で noindex にしたいなら、robots metadata を入れる。
export const metadata = {
robots: {
index: false,
follow: false,
},
};
HTML以外のレスポンスや特殊ケースでは X-Robots-Tag も使える。
重複は、canonical / redirect / sitemap が全部同じクリーンURLを向くように、URL正規化を1か所に集約する。
Step 4: sitemap を厳しく保つ
入れるのは、本当にインデックスしてほしいURLだけ。
- noindex ページを外す
- 重複やパラメータ違いを外す
- hreflang の対象は indexable にする
- staging パスは送らない
Step 5: Search Console で確認する
各箱から代表URLを1つずつ見る。
- URL Inspection
- 指定canonical vs Google選択canonical
- indexability status
- crawl / coverage の状態
間違ったページがインデックスされるなら、どのシグナルがぶつかっているかを見る。
ありがちな落とし穴
noindexを Google が見られる前に robots で止めてしまう- noindex URL を sitemap に残す
- canonical だけでページを消せると思う
- robots.txt を security と勘違いする
- クロール専用にしたい検索ページをそのまま indexable にしている
- 重複を canonical だけで片付けて、内部リンクと redirect を直していない
チェックリスト
- [ ] 各ルートを public / crawl-only / duplicate / private に分類した
- [ ]
robots.txtは本当に見せたくないパスだけをブロックしている - [ ] 検索結果に出したくないページには
noindexを使っている - [ ] noindex ページは sitemap に入っていない
- [ ] 公開ページの canonical は自己参照になっている
- [ ] 重複URLは1つの正規URLへ redirect している
- [ ] tracking params はクリーンURLへ canonicalize している
- [ ] 検索/フィルタページは index するかどうかを明示した
- [ ] staging パスは、disallow だけでなく認証でも守っている
- [ ] Search Console で各ページ種別の代表URLを確認した
- [ ] 内部リンクは正規URLを向いている
- [ ] Google の再クロール後に状態を再確認した
FAQ
Q1. robots.txt だけで検索結果から消せる?
安定しない。クロールは止められても、すでにインデックス済みなら、Googleがより強い除外シグナルを見るまで残ることがある。
Q2. noindex ページは sitemap に入れるべき?
入れない。外したいなら sitemap からも外す。
Q3. canonical と noindex は同じ?
違う。canonical は「重複セットの代表URL」を示すもの。noindex は「このページ自体をインデックスしない」という指示。
Internal links
- 親記事: インデックス(Indexing):まずはここから
- 関連:
Disclaimer
インデックスは確率的なもの。シグナルは改善できるが、Googleに任意のURLを好きなだけ登録・削除させることはできない。