5.

sitemap.xmlの書き方|上限・lastmod・Search Console送信

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

sitemap.xml とは

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

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

基本構造

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://example.com/</loc>
    <lastmod>2026-06-11</lastmod>
    <changefreq>daily</changefreq>
    <priority>1.0</priority>
  </url>
  <url>
    <loc>https://example.com/about</loc>
    <lastmod>2026-05-30</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
</urlset>

各要素の意味

要素必須意味Google の扱い
<loc>必須ページの URL(絶対 URL)重視
<lastmod>任意最終更新日(W3C Datetime)重視(再クロール判定に使用)
<changefreq>任意更新頻度の目安ほぼ無視
<priority>任意サイト内での相対重要度(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 万を超える場合はサイトマップを分割し、それらをまとめるサイトマップインデックスを用意します。

<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <sitemap>
    <loc>https://example.com/sitemap-articles-1.xml</loc>
    <lastmod>2026-06-11</lastmod>
  </sitemap>
  <sitemap>
    <loc>https://example.com/sitemap-articles-2.xml</loc>
    <lastmod>2026-06-11</lastmod>
  </sitemap>
  <sitemap>
    <loc>https://example.com/sitemap-images.xml</loc>
    <lastmod>2026-06-10</lastmod>
  </sitemap>
</sitemapindex>

配置と通知

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 '<?xml version="1.0" encoding="UTF-8"?>';
echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';

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

echo '</urlset>';

Node.js / Express

app.get('/sitemap.xml', async (req, res) => {
  const articles = await db.articles.findAll();
  res.set('Content-Type', 'application/xml');
  res.send(`<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
${articles.map(a => `
  <url>
    <loc>https://example.com/articles/${a.id}</loc>
    <lastmod>${a.updatedAt.toISOString().slice(0, 10)}</lastmod>
  </url>`).join('')}
</urlset>`);
});

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

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

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

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

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
        xmlns:image="http://www.google.com/schemas/sitemap-image/1.1">
  <url>
    <loc>https://example.com/recipe/1</loc>
    <image:image>
      <image:loc>https://example.com/img/recipe1.jpg</image:loc>
      <image:title>カルボナーラ</image:title>
    </image:image>
  </url>
</urlset>

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 — サイトマップ送信とインデックス確認

📚 関連: ファイル形式・拡張子セクション — 主要なファイル拡張子・形式を体系的に解説。XML(.xml)

編集
Post Share
子ページ
  1. サイトマップの書き方
  2. サイトマップインデックスの書き方
  3. エラー一覧 (sitemap.xml)
同階層のページ
  1. RESTサービス
  2. gRPC
  3. シングルトン
  4. コンテントタイプ(Content-Type)一覧
  5. sitemap.xml
  6. Feed
  7. ブロックチェーン

最近更新/作成されたページ