この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:4
ページ更新者:T
更新日時:2026-06-11 07:29:05

タイトル: サイトマップインデックスの書き方
SEOタイトル: XML サイトマップインデックス (sitemap_index.xml) の書き方完全ガイド

この記事の要点
  • サイトマップ 1 ファイルは 50,000 URL / 50 MB までの制限。超えるならサイトマップインデックスで分割
  • ルートタグは <sitemapindex>、子要素は <sitemap> (urlset ではない)
  • <sitemap><loc> (必須) + <lastmod> (推奨)
  • gzip 圧縮 (.xml.gz) 推奨、サイトマップは検索エンジンが定期取得
  • robots.txtSitemap: https://example.com/sitemap_index.xml 行を追加 + Google Search Console / Bing Webmaster Tools で送信

サイトマップインデックスとは

1 個のサイトマップ XML には最大 50,000 URL / 50 MB (非圧縮) の制限があります。大規模サイトでは複数のサイトマップに分割し、それらを束ねるサイトマップインデックスファイルを作ります。Google / Bing 等は、まずインデックスを読み込み、その中で参照されている個別サイトマップを順に取得します。

最小構成

<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <sitemap>
    <loc>https://example.com/sitemap-pages.xml</loc>
    <lastmod>2026-06-10T09:00:00+09:00</lastmod>
  </sitemap>
  <sitemap>
    <loc>https://example.com/sitemap-articles.xml</loc>
    <lastmod>2026-06-10T09:00:00+09:00</lastmod>
  </sitemap>
  <sitemap>
    <loc>https://example.com/sitemap-products.xml.gz</loc>
    <lastmod>2026-06-10T09:00:00+09:00</lastmod>
  </sitemap>
</sitemapindex>

要素一覧

要素必須説明
<?xml version="1.0" encoding="UTF-8"?>必須XML 宣言
<sitemapindex>必須ルート要素 (urlset と間違えやすい)
xmlns必須http://www.sitemaps.org/schemas/sitemap/0.9 固定
<sitemap>必須個別サイトマップへの参照 (1 個以上)
<loc>必須サイトマップ URL (絶対 URL、自サイトドメイン)
<lastmod>推奨サイトマップ自体の最終更新日 (W3C 日時形式)

個別サイトマップ (sitemap-articles.xml) の中身

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://example.com/articles/1</loc>
    <lastmod>2026-06-10</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://example.com/articles/2</loc>
    <lastmod>2026-06-09</lastmod>
  </url>
  <!-- 最大 50,000 URL まで -->
</urlset>

注意: インデックスは <sitemapindex> / <sitemap>、個別サイトマップは <urlset> / <url> です。タグを混同するとエラーになります。

分割の判断基準

状況分割すべきか分割例
URL 数 < 50,000不要単一 sitemap.xml で OK
URL 数 > 50,000必須カテゴリ別に分割
非圧縮で > 50 MB必須サイズで分割 or gzip 圧縮
更新頻度が異なるセクションあり推奨静的ページ / ブログ / 商品 で分ける
多言語サイト推奨言語別 (sitemap-ja.xml / sitemap-en.xml)
動画 / 画像が大量推奨画像専用 sitemap-images.xml

命名規則と配置

推奨ファイル構成:

https://example.com/
├── sitemap_index.xml            ← サイトマップインデックス (ルート直下)
├── sitemap-pages.xml            ← 静的ページ
├── sitemap-articles-1.xml       ← 記事 (1〜50,000 件目)
├── sitemap-articles-2.xml       ← 記事 (50,001〜100,000 件目)
├── sitemap-products.xml         ← 商品
├── sitemap-images.xml           ← 画像
└── robots.txt

ファイル名は自由だが、わかりやすい命名にする。
配置場所: 通常ルート (/) または /sitemap/ ディレクトリ。
重要: サイトマップは ★参照する URL と同じドメイン (またはサブドメイン) に置く★。

gzip 圧縮

サイトマップは XML なので gzip で圧縮すると 5〜10 倍小さくなります。配信時間短縮 & クローラ転送量削減のために推奨:

# 圧縮
gzip -k sitemap-articles.xml
# → sitemap-articles.xml (元) と sitemap-articles.xml.gz (圧縮版) が出来る

# サイトマップインデックス側では .gz を参照
# <loc>https://example.com/sitemap-articles.xml.gz</loc>

# Apache / Nginx の Content-Encoding ヘッダ自動付与は不要
# (拡張子で判定するクローラが多い)

robots.txt との連携

# robots.txt (ドメインルート直下に配置)
User-agent: *
Allow: /

# サイトマップインデックスを宣言
Sitemap: https://example.com/sitemap_index.xml

# 複数の Sitemap 行を並べることも可能 (任意)
Sitemap: https://example.com/sitemap-news.xml

Google Search Console に登録

  1. Google Search Console でプロパティを選択
  2. 左メニュー サイトマップ
  3. 「新しいサイトマップの追加」に sitemap_index.xml を入力
  4. 送信 ボタン
  5. 数時間〜数日でクロール開始、ステータス「成功」を確認

Bing Webmaster Tools に登録

  1. Bing Webmaster Tools でサイト登録
  2. 左メニュー サイトマップ
  3. サイトマップ送信 → URL 入力

Google から自動でデータ取り込み可能 (連携機能)。

Laravel での生成例

<?php
// routes/web.php
Route::get('/sitemap_index.xml', function () {
    $sitemaps = [
        ['loc' => url('/sitemap-pages.xml'),    'lastmod' => Page::max('updated_at')],
        ['loc' => url('/sitemap-articles.xml'), 'lastmod' => Article::max('updated_at')],
        ['loc' => url('/sitemap-products.xml'), 'lastmod' => Product::max('updated_at')],
    ];

    return response()
        ->view('sitemaps.index', compact('sitemaps'))
        ->header('Content-Type', 'application/xml');
});

// resources/views/sitemaps/index.blade.php
?>
<?= '<?xml version="1.0" encoding="UTF-8"?>' ?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
@foreach ($sitemaps as $s)
  <sitemap>
    <loc>{{ $s['loc'] }}</loc>
    <lastmod>{{ \Carbon\Carbon::parse($s['lastmod'])->toAtomString() }}</lastmod>
  </sitemap>
@endforeach
</sitemapindex>

WordPress プラグイン例

  • Yoast SEO: /sitemap_index.xml を自動生成
  • Rank Math: 同様、より細かい設定
  • Google XML Sitemaps: 軽量、サイトマップ専用
  • All in One SEO: SEO 統合プラグイン内蔵

検証ツール

# xmllint で構文チェック
xmllint --noout sitemap_index.xml
# エラーが無ければ何も出ない

# スキーマ検証 (sitemap-validator など)
curl -O https://www.sitemaps.org/schemas/sitemap/0.9/siteindex.xsd
xmllint --schema siteindex.xsd sitemap_index.xml --noout

# オンラインバリデータ
# - https://www.xml-sitemaps.com/validate-xml-sitemap.html
# - https://www.websiteplanet.com/webtools/sitemap-validator/

よくあるミス

ミス影響対処
<urlset> をインデックスとして使用個別サイトマップとして解釈される<sitemapindex> に修正
異なるドメインを <loc> に書く無視される (クロスドメインは原則 NG)自ドメイン or サブドメインのみ
BOM 付きで保存Incorrect namespace エラーBOM なし UTF-8 で保存
絶対 URL でない (相対 /xxx)無視必ず https://example.com/xxx
lastmod の形式不正無視 or 警告W3C 日時形式 (2026-06-10 または 2026-06-10T09:00:00+09:00)

FAQ

Q: 1 個のインデックスに何個までサイトマップを入れられる?
A: 50,000 サイトマップまで。実用上はそんなに増えません。

Q: インデックスのインデックス (入れ子) はできる?
A: 仕様上は禁止。サイトマップインデックスから <sitemap> で参照できるのは個別 sitemap (urlset) だけです。

Q: ping 通知は必要?
A: 2023 年に Google は ping エンドポイントを廃止。今は Search Console での送信または robots.txt 経由のクロールに任せます。