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

タイトル: sitemap.xml
SEOタイトル: sitemap.xml 完全ガイド(書き方 / 上限 / Search Console 送信 / 動的生成 / lastmod / changefreq)

この記事の要点
  • sitemap.xml検索エンジンに自サイトのクロール対象 URL の一覧を伝える XML ファイル
  • 1 ファイル 5 万 URL / 50MB(非圧縮)が上限。超える場合はサイトマップインデックスで分割
  • (URL)(最終更新日)(更新頻度)(優先度)の 4 要素
  • Google は changefreq / priority をほぼ無視。重要なのは loclastmod
  • 配置場所はサイトのルート直下が基本。robots.txtSitemap: 行で URL を記載すると検索エンジンが発見しやすい

sitemap.xml とは

sitemap.xml は、検索エンジン(Google・Bing 等)にサイト内のクロールしてほしい URL の一覧を伝える XML ファイルです。クローラーはリンク経由でサイトを巡回しますが、新規ページや更新の見落としを減らすため、サイトマップの提出が推奨されています。

SEO の必須対策ではないものの、ニュースサイト・EC サイト・大規模 Wikiのように URL 数が多いサイトでは効果が大きく、Google Search Console での状態確認にも役立ちます。

基本構造



  
    https://example.com/
    2026-06-11
    daily
    1.0
  
  
    https://example.com/about
    2026-05-30
    monthly
    0.5
  

各要素の意味

要素必須意味Google の扱い
必須ページの URL(絶対 URL)重視
任意最終更新日(W3C Datetime)重視(再クロール判定に使用)
任意更新頻度の目安ほぼ無視
任意サイト内での相対重要度(0.0-1.0)ほぼ無視

changefreq の値

always / hourly / daily / weekly / monthly / yearly / never のいずれか。前述のとおり Google は無視するため、書かなくても問題ありません。

lastmod の書式

W3C Datetime 形式。日付のみ 2026-06-11、時刻まで含めるなら 2026-06-11T14:30:00+09:00正確な値を出せないなら書かないほうがよい(嘘の lastmod はクロールバジェットを浪費)。

制限

制限
1 ファイルあたりの URL 数50,000 件
1 ファイルの最大サイズ(非圧縮)50MB
gzip 圧縮(推奨)可(拡張子 .xml.gz

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

URL 数が 5 万を超える場合はサイトマップを分割し、それらをまとめるサイトマップインデックスを用意します。



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

配置と通知

1. 配置場所

サイトのルート(例: https://example.com/sitemap.xml)に置くのが慣例。サブディレクトリでも動作はしますが、ルート配置が推奨です。

2. robots.txt で参照

User-agent: *
Allow: /

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

3. Google Search Console で送信

Search Console → 「サイトマップ」→ サイトマップ URL を入力 → 「送信」。送信後の処理状態検出 URL 数を確認しましょう。

動的生成の例

PHP(Laravel 等)

header('Content-Type: application/xml');

echo '';
echo '';

foreach ($articles as $a) {
    echo '';
    echo '  https://example.com/article/' . $a->id . '';
    echo '  ' . $a->updated_at->format('Y-m-d') . '';
    echo '';
}

echo '';

Node.js / Express

app.get('/sitemap.xml', async (req, res) => {
  const articles = await db.articles.findAll();
  res.set('Content-Type', 'application/xml');
  res.send(`

${articles.map(a => `
  
    https://example.com/articles/${a.id}
    ${a.updatedAt.toISOString().slice(0, 10)}
  `).join('')}
`);
});

含めるべき URL / 含めない URL

含める含めない
200 OK で返るページ404 / 410 のページ
canonical URL(正規 URL)noindex のページ
クロール対象のページrobots.txt でブロックされたページ
同一ドメイン内のページパラメータ違いの重複 URL
HTTPS のページリダイレクト先(リダイレクト元は不要)

画像 / 動画 / ニュース用の拡張

標準スキーマに加え、画像専用動画専用ニュース専用の拡張スキーマがあります。記事ページにメイン画像が紐づくならまとめて記載すると、画像検索のインデックス機会が増えます。



  
    https://example.com/recipe/1
    
      https://example.com/img/recipe1.jpg
      カルボナーラ
    
  

FAQ

Q: サイトマップを送らないと検索されない?
A: いいえ。リンクでつながっていればクロールはされます。サイトマップはクロール効率を上げる補助です。

Q: lastmod は嘘でも順位が上がる?
A: 上がりません。むしろ Google が「lastmod が当てにならない」と判断するとシグナルを無視されます。

Q: 圧縮版(.xml.gz)と非圧縮、どちらがよい?
A: 大規模サイトなら圧縮版を推奨。Google は両方サポートしています。

Q: Search Console で「検出 — インデックス未登録」になる
A: サイトマップで提出しても、Google がそのページをインデックスする価値があると判断しないと登録されません。重複コンテンツ / 薄い内容 / 内部リンクが薄いなどが原因です。

関連

  • robots.txt — クロール制御
  • canonical タグ — 正規 URL の指定
  • noindex — インデックス除外
  • Google Search Console — サイトマップ送信とインデックス確認