サイトマップインデックス完全ガイド
サイトが大きくなったら、複数のサイトマップを1つのインデックスにまとめるのが定石です。仕組み、書き方、運用ルールを実例付きで解説します。
サイトマップインデックスとは、ページのURLではなく他のサイトマップファイルを列挙する「サイトマップのためのサイトマップ」です。ルート要素に<sitemapindex>を使い、1ファイルあたりURL 50,000件・非圧縮50 MBという上限を超える大規模サイトが、複数のサイトマップを1つの入口にまとめるために使います。検索エンジンにはインデックスのURLを1つ登録するだけで、配下のすべてのサイトマップが発見されます。
インデックスが必要になるのはいつか
次のいずれかに当てはまったら導入のタイミングです。
- 上限への接近:URLが50,000件、または非圧縮で50 MBに近づいたとき。これは必須の分割です。
- コンテンツ種別ごとの整理:商品・記事・カテゴリページなどを別々のサイトマップに分けると、Search Consoleでどの種別のインデックス状況が悪いかを切り分けられます。
- 言語・地域ごとの整理:多言語サイトで言語別にサイトマップを分ける運用です。
- 日付ごとの整理:ニュースサイトやアーカイブの多いサイトで、月別・年別に分割する運用です。
つまり、上限超過という「義務」だけでなく、診断しやすさのための「戦略」としても使えます。
書き方:実例
構造は通常のサイトマップとよく似ています。<url>の代わりに<sitemap>を使い、<loc>には子サイトマップのURLを書きます。
<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<sitemap>
<loc>https://example.com/sitemap-products.xml</loc>
<lastmod>2026-07-16</lastmod>
</sitemap>
<sitemap>
<loc>https://example.com/sitemap-blog.xml.gz</loc>
<lastmod>2026-07-10T09:30:00+00:00</lastmod>
</sitemap>
</sitemapindex>
名前空間は通常のサイトマップと同じhttp://www.sitemaps.org/schemas/sitemap/0.9です。子サイトマップはgzip圧縮(.xml.gz)でも構いません。
守るべきルール
- 最大50,000サイトマップ:1つのインデックスが参照できる子サイトマップは最大50,000件です。理論上は50,000×50,000 = 25億URLまで扱えます。
- 入れ子は禁止:インデックスの中に別のインデックスを載せることはプロトコルで認められていません。参照できるのは通常のサイトマップだけです。
- 子の
<lastmod>:各<sitemap>エントリには、その子サイトマップファイルの最終更新日時を任意で記載できます。正確に記載しておくと、クローラーは変更のあったサイトマップだけを優先的に再取得できます。 - ホストの一致:子サイトマップのURLは、原則としてインデックスと同じホストで配信されている必要があります。
Search Consoleにはインデックスだけを登録する
Google Search ConsoleにはインデックスファイルのURLだけを登録すれば十分です。Googleがインデックスをたどって配下のサイトマップをすべて処理し、Search Console上には子サイトマップごとの検出URL数とエラーが個別に表示されます。子を1つずつ登録し直す必要はなく、二重登録はレポートを読みにくくするだけです。robots.txtのSitemap:行にも、インデックスのURLを1行書けば完了です。
検証ツールは子サイトマップをどうチェックするか
WebDoctorのサイトマップ検証ツールにインデックスのURLを入れると、まずインデックス自体(名前空間、各<loc>の形式、lastmodの妥当性、入れ子の有無)を検証し、続いて配下の子サイトマップの一覧を表示します。各子サイトマップはワンクリックで個別に検証でき、大規模サイトでも問題のあるファイルだけを素早く特定できます。
よくある間違い
| 間違い | 正しい方法 |
|---|---|
| インデックスの中にインデックスを載せる | 入れ子は禁止。階層は「インデックス→サイトマップ」の2段まで |
| インデックスにページURLを直接書く | ページは子サイトマップ側に。インデックスはサイトマップのみ参照 |
| ルート要素を<urlset>のまま使う | インデックスのルート要素は<sitemapindex> |
| 子とインデックスを両方Search Consoleに登録 | 登録はインデックスのみ。子は自動的に処理される |
| 存在しない・404の子サイトマップを残す | 削除したサイトマップはインデックスからも除去する |
導入の手順まとめ
- URLを種別・言語・日付など一貫した基準で複数のサイトマップに分割する(各5万件・50 MB以下)。
<sitemapindex>を作成し、各子のURLと正確な<lastmod>を記載する。- robots.txtの
Sitemap:行とSearch Consoleにインデックスのみを登録する。 - 再生成をデプロイフローに組み込み、子の増減がインデックスに反映されるようにする。
分割前のサイトマップに他の問題がないかは、サイトマップエラーの修正ガイドで確認できます。