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

タイトル: サイトマップの書き方
SEOタイトル: sitemap.xml の書き方完全ガイド(URL / 画像 / 動画 / index / 圧縮)

この記事の要点
  • sitemap.xml は ルート
  • 各 URL は 必須、 強推奨、/ は今や無視される
  • 1 ファイル上限: 50,000 URL かつ 50 MB 未満(非圧縮)。超えたら分割 + sitemap-index で束ねる
  • gzip 圧縮 (sitemap.xml.gz) も認識される。大規模サイトは圧縮が基本
  • 画像 / 動画 / ニュース / hreflang は拡張名前空間を追加。Google Search Console で送信

最小の sitemap.xml



  
    https://example.com/
    2026-06-11
  
  
    https://example.com/about
    2026-05-30
  

各タグの意味

タグ必須役割
ルート要素。名前空間 0.9 を指定
URL ごとに 1 個
絶対 URL。URL エンコード必須。2048 文字以内
強推奨最終更新日 (W3C Datetime / YYYY-MM-DD)
任意更新頻度 (Google は無視)
任意重要度 (Google は無視)

changefreq / priority は無視されると Google 公式が明言(2017〜)。書いてもエラーにはならないが効果は無い。正確な lastmod が最重要

1 ファイルの上限と分割

サイトマップ仕様には1 ファイルにつき以下の上限があります:

  • URL 件数: 最大 50,000 個
  • ファイルサイズ: 非圧縮で 50 MB 未満

超える場合は分割し、sitemap index ファイルで束ねます:



  
    https://example.com/sitemap-articles-1.xml.gz
    2026-06-11
  
  
    https://example.com/sitemap-articles-2.xml.gz
    2026-06-11
  
  
    https://example.com/sitemap-products.xml.gz
    2026-06-10
  

index ファイル自体も上限あり: 最大 50,000 sitemap、50 MB 未満。理論上は 5 万 × 5 万 = 25 億 URL まで管理可能。

gzip 圧縮

大規模サイトでは .xml.gz 形式が一般的:

# 作成
gzip -k sitemap.xml
# sitemap.xml と sitemap.xml.gz が並ぶ

# 拡張子なしで保存して中身を圧縮しても OK だが、検索エンジンには .gz の方が伝わる

# Apache で gzip を Content-Encoding 付きで返す例
# .htaccess
AddType application/xml .xml
AddEncoding gzip .gz

拡張 1: 画像サイトマップ



  
    https://example.com/products/foo
    
      https://example.com/img/foo-1.jpg
      Foo 商品画像 1
    
    
      https://example.com/img/foo-2.jpg
    
  

1 つの 内に最大 1000 枚の画像情報を入れられます。

拡張 2: 動画サイトマップ


  
    https://example.com/videos/intro
    
      https://example.com/thumb.jpg
      製品紹介ビデオ
      製品の使い方を 3 分で解説
      https://example.com/video.mp4
      180
    
  

拡張 3: ニュースサイトマップ(Google ニュース)


  
    https://news.example.com/2026/06/11/article
    
      
        Example News
        ja
      
      2026-06-11T10:00:00+09:00
      新製品発表
    
  

ニュースサイトマップは過去 48 時間以内の記事のみ対象。

拡張 4: hreflang(多言語サイト)


  
    https://example.com/ja/
    
    
    
  
  
    https://example.com/en/
    
    
  

設置とサーチエンジンへの通知

設置

  • ドメインルートに置く: https://example.com/sitemap.xml
  • サブディレクトリでも OK だが、その配下の URL しか含められない
  • HTTPS で配信(HTTP は今や非推奨)

robots.txt で宣言

# /robots.txt
User-agent: *
Allow: /

Sitemap: https://example.com/sitemap.xml
Sitemap: https://example.com/sitemap-news.xml

Google Search Console に送信

  • Search Console → サイトマップ → 「新しいサイトマップの追加」
  • sitemap.xml のパスを入力 → 送信
  • 「成功しました」と出れば認識完了。検出件数は数日かかる

Bing Webmaster Tools に送信

Bing の Webmaster Tools 管理画面から同様に送信。bing.com/ping?sitemap=URL は廃止済み。

動的生成例: PHP / Laravel

// Laravel: routes/web.php
Route::get('/sitemap.xml', function () {
    $articles = Article::where('published', true)->get();
    return response()
        ->view('sitemap', compact('articles'))
        ->header('Content-Type', 'application/xml');
});

// resources/views/sitemap.blade.php
' . "\n"; ?>

@foreach ($articles as $a)
  
    {{ url('/articles/' . $a->slug) }}
    {{ $a->updated_at->toDateString() }}
  
@endforeach

よくあるトラブル

症状原因対処
「読み取れません」エラーXML 構文エラー / BOM / 文字化けUTF-8 (BOM 無し) で出力、XML バリデータで確認
「URL を取得できません」掲載 URL が 404 / robots.txt でブロック該当 URL の HTTP 状態を確認
登録 URL が反映されないnoindex / canonical で別 URL を指しているnoindex 削除、canonical を見直し
圧縮が認識されないContent-Type / 拡張子ミス.xml.gz + application/x-gzip
50,000 件を超えた分割していないsitemap-index に切替

FAQ

Q: lastmod を毎回 NOW にしてはダメ?
A: ダメ。実際の更新が無いのに新しい日付を返すと、検索エンジンに信用されなくなり再クロール頻度が下がります。本当に更新したときだけ更新を。

Q: 動的生成と静的ファイルどちらが良い?
A: 小規模なら動的でも OK。大規模なら cron で静的ファイルを夜間生成 → CDN 配信が定石。

Q: noindex のページも入れるべき?
A: 入れないでください。サイトマップは「インデックスしてほしい URL」を伝えるものです。