Date
2026/04/08
Category
HP制作
Title
「検出-インデックス未登録」はサイトマップが原因?実体験から解説

Google Search Consoleで「検出-インデックス未登録」が増え続けているのに、コンテンツの品質やrobots.txtを見直しても改善しない。そんな状態が続いていませんか。
私が運営するコーポレートサイトで、55ページが「検出-インデックス未登録」になる事態が発生しました。原因を調べたところ、記事の内容やサイトの権威性ではなく、サイトマップ生成コードに潜んでいた2つのバグが根本原因でした。
修正後、サイトマップのURL数は132から228に増加。これまでGoogleに認識すらされていなかった104件の記事が、正しくサイトマップに掲載されるようになりました。
この記事では、「検出-インデックス未登録」を引き起こしたサイトマップのバグの具体的な内容と、その発見・修正方法を実体験をもとに解説します。
異変に気づいたのは、GSC(Google Search Console)のページインデックスレポートを確認したときでした。「検出-インデックス未登録」のステータスに55件ものページが表示されていたのです。
「検出-インデックス未登録」とは、GoogleがURLの存在を認識しているにもかかわらず、まだクロール(ページの読み込み)すら行っていない状態です。つまり、Googleの検索結果に一切表示されないことを意味します。
最初はコンテンツの品質や内部リンクの不足を疑いました。しかし、いくつかのURLを個別に検査しても技術的な問題は検出されず、「順番待ち」の状態が続くだけ。そこでサイトマップ自体を検証することにしました。
結果として見つかったのは、サイトマップ生成コードに潜んでいた2つの致命的なバグでした。

サイトマップのXMLを直接確認したところ、/services/undefinedというURLが7件含まれていました。
私のサイトはNext.js(App Router)で構築しており、sitemap.jsでサービスページのURLを動的に生成しています。問題はここにありました。サービスデータの配列からslugプロパティを参照してURLを組み立てていたのですが、実際のデータにはslugというプロパティが存在しなかったのです。
JavaScriptでは、存在しないプロパティにアクセスするとエラーではなくundefinedが返ります。その結果、/services/undefinedというURLが7件、サイトマップに混入していました。
このバグの厄介な点は3つあります。
/services/undefinedはURL形式として有効なため、XMLバリデーションを通過するGoogleはサイトマップに掲載されたURLを「サイトオーナーがインデックスしてほしいと宣言したURL」として扱います。そのため存在しないURLであっても、定期的にクロールを試みます。毎回404を返すURLに対してクロールバジェット(Googleがサイトに割り当てるクロールリソース)が浪費され続けていたのです。
もうひとつの原因はさらに深刻でした。ヘッドレスCMS(MicroCMS)のAPIには、1回のリクエストで取得できる件数にデフォルトの上限(100件)があります。
サイトマップ生成コードでは、APIから全記事を取得してURLリストを出力していましたが、ページネーション(複数回リクエストで全件取得する処理)を実装していませんでした。記事数が100件を超えた時点で、101件目以降の記事がサイトマップから完全に欠落していたのです。
記事の総数は204件。つまり約半数の104件がサイトマップに含まれていなかったことになります。
この問題が特に危険なのは、サイトの成長期に突然発生する点です。
MicroCMSに限らず、Contentful、Strapi、Newtなど主要なヘッドレスCMSのほとんどにAPIの取得上限があります。ヘッドレスCMSでサイトを構築している場合、サイトマップ生成時のページネーション実装は必須と考えてください。

Googleは各サイトに割り当てるクロールリソースに上限を設けています。Google公式のクロールバジェット管理ガイドでは、サイトマップにはインデックス可能な正規URLのみを含めるべきと明記されています。
404を返すURLやリダイレクトが混入していると、その分だけ本来クロールすべきページへのリソースが削られます。特に中小規模のサイトではクロールバジェット自体が限られているため、1件の無駄なURLでも影響が大きくなります。
サイトマップに含まれていないページは、Googleが内部リンクを辿って発見するまでインデックスされません。サイトマップ経由での発見と比べ、インデックスまでの時間が数日から数週間以上遅延する可能性があります。
新規記事を公開しても検索結果に表示されない期間が長引くほど、タイムリーなトラフィックを取り逃がすことになります。SEOにおいて記事の鮮度は重要な評価要因であり、インデックスの遅延はそのまま機会損失に直結します。
サイトマップに掲載したURLの多くが404やリダイレクトを返す状態が続くと、Googleはそのサイトの管理品質が低いと判断する可能性があります。これはサイト全体のクロール頻度やインデックス優先度に波及します。
私のケースでは、サイトマップの132URLのうち55件(42%)が「検出-インデックス未登録」でした。提出したURLの4割がインデックスに至らない状態は、サイトの信頼性シグナルとして決して好ましくありません。
まずサイトマップが出力しているURL数と、サイト内の実際のページ数が一致しているか確認します。
GSCの「サイトマップ」レポートで「検出されたURL数」を確認し、想定より少なければ取得漏れを疑いましょう。ブラウザで/sitemap.xmlに直接アクセスし、XMLの中に覚えのないURLやundefinedが含まれていないかも目視でチェックしてください。
サイトマップに含まれるすべてのURLが200(正常)を返すか確認します。curlやスクリプトで一括チェックすると効率的です。
404やリダイレクト(301/302)が見つかった場合、そのURLの生成ロジックに問題があります。プロパティの参照ミスやパスの組み立てロジックを確認しましょう。
ヘッドレスCMSを使用している場合、APIのデフォルト取得件数の上限を必ず確認してください。
修正のポイントは、APIレスポンスに含まれるtotalCount(全件数)と取得済み件数を比較し、全件取得するまでリクエストを繰り返すことです。offsetパラメータで取得開始位置をずらしながら、すべてのコンテンツを取得するループ処理を実装します。
現在のコンテンツ数が上限以下であっても、将来の増加に備えてページネーションを最初から実装しておくことを強くお勧めします。
サイトマップの修正とデプロイが完了したら、GSCの「サイトマップ」レポートから再送信を行います。Googleが新しいサイトマップをクロールし、追加されたURLのインデックスを開始します。反映には通常2〜4週間を要します。
2つのバグを修正した結果、サイトマップのURL数は132から228に増加しました。存在しないURLの除去(7件減)と、漏れていた104件の記事の追加によるものです。
GSCのサイトマップレポートでは「検出されたURL」が即座に正しい数値に更新されたことを確認しています。「検出-インデックス未登録」の解消にはGoogleのクロールサイクルに依存するため、2〜4週間の経過観察を続ける予定です。
この経験から得た最大の教訓は、サイトマップは「一度設定したら終わり」ではないということです。

サイトの成長とともに、気づかないうちにサイトマップが不完全になるリスクがあります。月に一度は以下の4点を確認してください。
「検出-インデックス未登録」の原因として、コンテンツ品質やrobots.txtの設定ミスはよく紹介されています。しかし今回の実体験で分かったのは、サイトマップ生成コードのバグという見落としやすい原因も存在するということです。同じ症状でお悩みの方は、ぜひサイトマップの中身を直接確認してみてください。
ホームページの技術的な問題でお困りの方は、こちらの記事も参考にしてください。

Company
株式会社Fyve
Address
〒810-0001
福岡県福岡市中央区天神4丁目6-28
天神ファーストビル7階
Tel
080-1460-2728
info@fyve.co.jp