Next.js のページが Google に登録されないのはなぜか
Next.js のサイトは、ステージングから残った noindex、ルート レイアウトの 1 つの canonical タグ、ストリーミング中の 404、古い URL のサイトマップでページを失いがちです。上から順に確認しましょう。
サイトが Google に出ない原因
- サイトが新しい。Google によると、クロールには数日から数週間かかることがあります。Google で
site:に続けてドメインを検索します(例:site:example.com)。何も出なければ、Google はまだページを持っていない可能性が高いです。ページごとの正確な答えは、Search Console の URL 検査ツールでわかります。 - ドメインがプレビュー ビルドを配信している。Vercel はプレビュー環境に
X-Robots-Tag: noindexを付けます。ドメインがそれを指しているか、そのヘッダーをnext.configにコピーしていると、Google は全ページを外します。ページにcurl -Iを実行し、X-Robots-Tagを探します。 - メタデータが
noindexを付けている。metadataやgenerateMetadataに、ステージングから残ったrobots: { index: false }がないか探します。ストリーミング開始後のnotFound()もnoindexを付けます。 robots.tsがサイトをブロックしている。app/robots.tsが/robots.txtを作ります。ステージングから残ったdisallow: '/'は全ページをブロックします。- サイトマップがない、または Search Console にない。
app/sitemap.tsを追加するまで、Next.js にサイトマップはありません。200を返す URL だけを、サイトのスラッシュの形で載せ、Search Console で/sitemap.xmlを送信します。 - 内容がブラウザだけで読み込まれる、または全ページが 1 つの canonical タグを共有している。本文はサーバーで取得し、最初の HTML に入れます。各ページのメタデータで
alternates.canonicalを設定します。ルート レイアウトだけで設定した canonical は下の全ページに効き、全ページがトップページを指してしまいます。 - リンクが本物のリンクではない。ナビゲーションには
<Link href>を使います。Google がたどるのは<a href>のリンクで、router.push()を呼ぶクリック処理ではありません。
一部のページだけがないとき: Next.js で多い 3 つの理由
- ソフト 404:
notFound()を呼ばずに「見つかりません」と表示する[slug]のような動的ルートは、ステータス200を返します。ストリーミング開始後のnotFound()も同じです。<Suspense>やloading.tsxの外で、ストリーミング前にnotFound()を呼ぶか、Proxy でスラッグを確認します。 - コンテンツのない状態でページがインデックスに登録されています: ブラウザで内容を読み込むページは、Google に最初、空のページか読み込み中の表示を見せます。Server Components、静的ページ、サーバー側レンダリングで、本文をサーバーで作ります。
- ページにリダイレクトがあります: Proxy(ミドルウェア)や
trailingSlashの設定が、サイトマップと違う URL へ訪問者を送ります。末尾のスラッシュもドメインも、サイトが実際に使う URL でサイトマップに載せます。
サイトマップの場所
App Router では、app/sitemap.ts が /sitemap.xml を、app/robots.ts が /robots.txt を作ります。どちらも、追加するまでありません。
Bing にも変更を伝えたいなら、Next.js の IndexNow を見てください。
CrawlCoach でわかること
Next.js のサイトで Google が外したページは、CrawlCoach の無料レポートで確認できます。サイトマップから最大 500 ページを調べ、ソフト 404 などの理由ごとに直し方を示します。
よくある質問
Next.js の 404 ページがステータス 200 を返すのはなぜですか?
notFound() が動く前にページのストリーミングが始まり、200 がすでに送られたためです。Next.js はその場合 noindex を付けます。確認を <Suspense> や loading.tsx より前か、Proxy に移すと、本物の 404 を返せます。
Google はクライアント側でレンダリングする Next.js のページを読めますか?
Google は JavaScript を実行できますが、実行は後回しで、頻度も下がります。サーバーで作ったページのほうが、早く、確実に Google に載ります。
sitemap.ts と robots.ts は両方必要ですか?
必要です。robots.ts にサイトマップの URL を書き、sitemap.ts には 200 を返す URL だけを載せます。
出典
2026年10月8日 に確認しました。Search Console とヘルプの内容は Google が随時変更します。画面の表示が違う場合は、出典をご確認ください。
Google に載っていないページを確認しましょう
Google アカウントでログインするだけです。CrawlCoach が最大 500 ページを無料でチェックし、問題ごとに直し方を示します。
無料レポートを受け取る500 ページまで無料です。クレジットカードは不要です。Search Console で使っている Google アカウントでログインしてください。
CrawlCoach のアプリとレポートは英語で表示されます。