SEO基礎 ToolShare Lab / Guide

sitemap.xmlとrobots.txtの書き方
【SEO必須設定】完全ガイド

「サイトマップは作ったほうがいいの?」「robots.txtで何を書けばいいかわからない」「Search Consoleでエラーが出ているけど対処法がわからない」——sitemap.xmlとrobots.txtはSEOの土台となるファイルだ。この2つを正しく設定するだけで、Googleのクロール効率が上がりインデックス速度が改善する。この記事では、XML構造の書き方からrobots.txtの制御パターン、Search Consoleでの登録手順まで、コピーして使える実例コード付きで解説する。

読了時間: 約12分 更新日: 2026年3月20日

sitemap.xmlは検索エンジンにサイト内のURL一覧を伝えるXMLファイル。robots.txtはクローラーのアクセス範囲を制御するテキストファイル。sitemap.xmlはクロール促進(「ここを見て」)、robots.txtはクロール制限(「ここは見ないで」)が役割だ。どちらもサイトのルートディレクトリ(https://example.com/sitemap.xml, https://example.com/robots.txt)に配置し、Search Consoleで登録・確認するのがSEOの基本設定になる。

sitemap.xmlとrobots.txtとは

Webサイトを公開したら、Googleなどの検索エンジンに「正しくクロール・インデックスしてもらう」ための設定が必要になる。その中核となるのがsitemap.xmlrobots.txtの2つのファイルだ。

項目 sitemap.xml robots.txt
役割 サイト内のURL一覧を検索エンジンに伝える クローラーのアクセス範囲を指示する
形式 XML プレーンテキスト
配置場所 /sitemap.xml /robots.txt
必須か 推奨(大規模サイトは必須) 推奨(なければ全ページクロール対象)
効果 新規・更新ページの発見を促進 不要ページのクロールを防止
強制力 なし(あくまで「ヒント」) あり(主要クローラーは従う)

なぜ両方必要なのか

sitemap.xmlだけではクローラーが不要なページまで巡回してクロールバジェット(1日にクロールされるページ数の上限)を浪費する。robots.txtだけではクローラーがサイト構造を把握できず、深い階層のページが見落とされる。sitemap.xmlで「見てほしいページ」を伝え、robots.txtで「見なくていいページ」をブロックする——この2つを組み合わせることで、クロール効率が最大化される。

Point

10ページ以下の小規模サイトではsitemap.xmlがなくてもGoogleは全ページを発見できることが多い。しかし、ページを追加するたびにインデックス速度が向上するため、サイト規模に関わらず最初から設置しておくのがベストプラクティスだ。

sitemap.xmlの書き方

sitemap.xmlはXML形式で記述する。最低限必要なのは<urlset>のルート要素と、各URLを示す<url>要素だ。以下がフリーランスのポートフォリオサイトを想定した基本的な記述例になる。

<?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-03-20</lastmod> <changefreq>weekly</changefreq> <priority>1.0</priority> </url> <url> <loc>https://example.com/works/</loc> <lastmod>2026-03-15</lastmod> <changefreq>monthly</changefreq> <priority>0.8</priority> </url> <url> <loc>https://example.com/about/</loc> <lastmod>2026-01-10</lastmod> <changefreq>yearly</changefreq> <priority>0.5</priority> </url> <url> <loc>https://example.com/contact/</loc> <lastmod>2026-01-10</lastmod> <changefreq>yearly</changefreq> <priority>0.3</priority> </url> </urlset>

各タグの意味と使い方

タグ 必須 説明 値の例
<urlset> 必須 ルート要素。名前空間を指定する xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
<url> 必須 各URLのコンテナ -
<loc> 必須 ページの完全URL(https://から始まる) https://example.com/works/
<lastmod> 推奨 最終更新日(W3C Datetime形式) 2026-03-20
<changefreq> 任意 更新頻度のヒント(Googleはほぼ無視) weekly, monthly, yearly
<priority> 任意 サイト内での相対的な優先度(0.0〜1.0) 0.8(Googleはほぼ無視)

Point

Googleは<changefreq><priority>ほぼ参照しないことを公式に明言している。SEO効果があるのは<loc><lastmod>の2つだ。ただし<lastmod>も実際にコンテンツが更新された日付を入れることが重要——更新していないのに日付だけ変えるとGoogleの信頼を失う。

sitemap.xmlの技術的な制約

サイトマップの種類

サイトマップにはXML以外にもいくつかの種類がある。サイトの規模やコンテンツに応じて使い分ける。

XMLサイトマップ(標準)

最も一般的な形式。前述の<urlset>で記述する。すべてのWebサイトで使用すべき基本形式だ。

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

50,000URLを超える大規模サイトでは、複数のサイトマップファイルを束ねる「サイトマップインデックス」を使う。

<?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-03-20</lastmod> </sitemap> <sitemap> <loc>https://example.com/sitemap-blog.xml</loc> <lastmod>2026-03-18</lastmod> </sitemap> <sitemap> <loc>https://example.com/sitemap-images.xml</loc> <lastmod>2026-03-15</lastmod> </sitemap> </sitemapindex>

画像サイトマップ

画像検索からの流入を増やしたい場合は、画像サイトマップを追加する。通常のサイトマップに<image:image>タグを追加する形式だ。

<url> <loc>https://example.com/works/project-a/</loc> <image:image> <image:loc>https://example.com/images/project-a-hero.jpg</image:loc> <image:title>プロジェクトAのデザイン</image:title> </image:image> <image:image> <image:loc>https://example.com/images/project-a-detail.jpg</image:loc> <image:title>プロジェクトAの詳細画面</image:title> </image:image> </url>

動画サイトマップ

動画コンテンツがある場合は動画サイトマップを作成する。YouTubeを埋め込んでいる場合も有効だ。

<url> <loc>https://example.com/tutorials/css-grid/</loc> <video:video> <video:thumbnail_loc>https://example.com/images/thumb-css-grid.jpg</video:thumbnail_loc> <video:title>CSS Grid入門チュートリアル</video:title> <video:description>CSS Gridの基本的な使い方を解説</video:description> <video:player_loc>https://www.youtube.com/embed/xxxxx</video:player_loc> </video:video> </url>
種類 用途 必要なサイト
XMLサイトマップ 全ページのURL通知 すべてのサイト
サイトマップインデックス 複数サイトマップの統合 50,000URL超の大規模サイト
画像サイトマップ 画像検索での表示向上 ポートフォリオ、ECサイト
動画サイトマップ 動画検索での表示向上 動画コンテンツがあるサイト

robots.txtの書き方

robots.txtは、検索エンジンのクローラーに「このパスにはアクセスしないで」と伝えるテキストファイルだ。サイトのルートディレクトリ(https://example.com/robots.txt)に配置する。

基本構文

# フリーランスのポートフォリオサイト用 robots.txt # すべてのクローラーへの指示 User-agent: * Disallow: /admin/ Disallow: /wp-admin/ Disallow: /search? Disallow: /tmp/ Allow: / # サイトマップの場所を通知 Sitemap: https://example.com/sitemap.xml

ディレクティブの意味

ディレクティブ 説明
User-agent 対象のクローラーを指定(*で全クローラー) User-agent: Googlebot
Disallow クロールを禁止するパス Disallow: /admin/
Allow Disallow内で例外的に許可するパス Allow: /admin/public/
Sitemap サイトマップのURLを通知 Sitemap: https://example.com/sitemap.xml
Crawl-delay クロール間隔の指定(秒)※Googleは非対応 Crawl-delay: 10

よくあるパターン集

# パターン1: 基本(管理画面だけブロック) User-agent: * Disallow: /admin/ Disallow: /wp-admin/ Sitemap: https://example.com/sitemap.xml # パターン2: 検索結果・タグページをブロック User-agent: * Disallow: /search Disallow: /tag/ Disallow: /?s= Sitemap: https://example.com/sitemap.xml # パターン3: 特定のクローラーだけブロック User-agent: AhrefsBot Disallow: / User-agent: SemrushBot Disallow: / User-agent: * Allow: / Sitemap: https://example.com/sitemap.xml # パターン4: 全クローラーを許可(最小構成) User-agent: * Allow: / Sitemap: https://example.com/sitemap.xml # パターン5: 開発・ステージング環境(全ブロック) User-agent: * Disallow: /

Point

robots.txtは「紳士協定」であり、Googlebot等の主要クローラーは従うが、悪意のあるボットは無視する。セキュリティ対策としてrobots.txtに頼ってはいけない。機密情報は認証(パスワード保護)やサーバー側のアクセス制御で守るべきだ。

robots.txtで制御すべきページ

robots.txtでブロックすべきページと、ブロックしてはいけないページを明確に区別することが重要だ。判断を誤るとSEOに悪影響を与える。

ブロックすべきページ

対象 理由 Disallow設定
管理画面 インデックス不要、セキュリティ面でも非公開が望ましい Disallow: /admin/
サイト内検索結果 無限にURLが生成され、クロールバジェットを浪費 Disallow: /search
ログイン・会員専用ページ クローラーがアクセスしても意味のあるコンテンツが見えない Disallow: /my-account/
カート・決済ページ 個人情報を含むページ、インデックス不要 Disallow: /cart/
印刷用・PDF版ページ 本来のページと内容が重複する Disallow: /print/
パラメータ付きの重複URL ソート・フィルタで無限に生成される Disallow: /*?sort=
開発・テスト環境 本番と重複コンテンツになる Disallow: /(環境全体をブロック)

ブロックしてはいけないページ

Point

「noindexにしたいページ」をrobots.txtでブロックしてはいけない。robots.txtでブロックするとクローラーがページにアクセスできないため、<meta name="robots" content="noindex">タグを読み取れず、結果的にインデックスから削除されない。noindexにしたいなら、robots.txtではブロックせず、ページ内にnoindexメタタグを設置する。

Google Search Consoleでの登録方法

sitemap.xmlをサーバーに配置したら、Google Search Console(GSC)に登録してクロールを促進しよう。

サイトマップの送信手順

  1. Google Search Consoleにログイン
  2. 対象のプロパティを選択
  3. 左メニューから「サイトマップ」をクリック
  4. 「新しいサイトマップの追加」にURLを入力(例: sitemap.xml
  5. 「送信」をクリック
  6. ステータスが「成功しました」になれば完了

送信後に確認すべきこと

確認項目 正常な状態 問題がある場合
ステータス 「成功しました」 「取得できませんでした」→URLまたはサーバー設定を確認
検出されたURL数 サイトマップに記載したURL数と一致 差異がある→XML構文エラーの可能性
インデックスされたURL数 検出URL数に近い値 大幅に少ない→noindex・重複・低品質の可能性

robots.txtの確認方法

robots.txtが正しく機能しているかは、ブラウザで直接確認できる。

  1. ブラウザでhttps://あなたのサイト/robots.txtにアクセス
  2. テキストファイルが表示されることを確認
  3. Googleのrobots.txtテスターで構文チェック
  4. Search Consoleの「URL検査」で特定のURLがブロックされていないか確認

よくある間違いと対処法

間違い1: robots.txtでサイト全体をブロック

# NG: サイト全体をブロック(よくある事故) User-agent: * Disallow: / # 原因: 開発環境のrobots.txtを本番にデプロイしてしまった # 対処: 即座に修正して再デプロイ → GSCでURL検査を実行

ステージング環境用のDisallow: /をそのまま本番にデプロイしてしまうのは最もよくある事故だ。デプロイ後は必ずhttps://本番URL/robots.txtをブラウザで確認しよう。

間違い2: lastmodを機械的に更新

# NG: 実際のコンテンツ更新がないのにlastmodだけ毎日更新 <url> <loc>https://example.com/about/</loc> <lastmod>2026-03-20</lastmod> <!-- 内容は半年前から変わっていない --> </url> # OK: 実際にコンテンツを更新した日付を入れる <url> <loc>https://example.com/about/</loc> <lastmod>2025-09-15</lastmod> <!-- 本当に更新した日付 --> </url>

Googleは<lastmod>の信頼性を学習する。日付を偽り続けると、そのサイトの<lastmod>全体が無視されるようになる。

間違い3: index.htmlとディレクトリURLの重複

# NG: 同じページが2つのURLでsitemap.xmlに載っている <url><loc>https://example.com/about/</loc></url> <url><loc>https://example.com/about/index.html</loc></url> # OK: 正規URLだけを記載する <url><loc>https://example.com/about/</loc></url>

間違い4: CSS/JSをrobots.txtでブロック

# NG: CSS/JSをブロックするとGoogleがレンダリングできない User-agent: * Disallow: /css/ Disallow: /js/ Disallow: /images/ # OK: CSS/JS/画像は許可する User-agent: * Disallow: /admin/ Allow: /css/ Allow: /js/ Allow: /images/

間違い5: noindexページをrobots.txtでブロック

# NG: robots.txtでブロック → Googleがnoindexタグを読めない # robots.txt User-agent: * Disallow: /old-page/ # ページのHTML <meta name="robots" content="noindex"> # ↑ クローラーがアクセスできないので読まれない # OK: robots.txtではブロックせず、noindexタグで制御 # robots.txt User-agent: * Disallow: /admin/ # /old-page/ はブロックしない # ページのHTML <meta name="robots" content="noindex, follow"> # ↑ クローラーがアクセスしてnoindexを認識する

間違い6: sitemap.xmlにリダイレクト先を記載していない

# NG: リダイレクト元のURLを記載 <url><loc>https://example.com/old-page/</loc></url> # → 301リダイレクトでhttps://example.com/new-page/ に飛ぶ # OK: リダイレクト先(最終URL)を記載 <url><loc>https://example.com/new-page/</loc></url>

間違い7: httpsとhttpが混在

# NG: httpsサイトなのにhttpのURLが混在 <url><loc>http://example.com/works/</loc></url> <!-- http --> <url><loc>https://example.com/about/</loc></url> <!-- https --> # OK: すべてhttpsで統一 <url><loc>https://example.com/works/</loc></url> <url><loc>https://example.com/about/</loc></url>

静的サイト・WordPressでの設定方法

静的サイト(HTML/gulp/EJS)の場合

静的サイトではsitemap.xmlとrobots.txtを手動で作成し、ルートディレクトリに配置する。gulpやEJSを使っている場合はビルド時にルートにコピーされるよう設定する。

# ディレクトリ構成例(gulp + EJS プロジェクト) project/ ├── src/ │ └── static/ │ ├── sitemap.xml ← 手動で作成 │ └── robots.txt ← 手動で作成 ├── dist/ ← ビルド出力先 │ ├── sitemap.xml ← gulp copyタスクでコピー │ └── robots.txt ← gulp copyタスクでコピー └── gulpfile.js
# 静的サイト用 robots.txt(最小構成) User-agent: * Allow: / Sitemap: https://あなたのドメイン/sitemap.xml

静的サイトのメリットは、出力されるURLが明確なため、sitemap.xmlの管理が簡単なことだ。ページを追加・削除するたびに手動で更新する必要があるが、小〜中規模サイトなら大した手間ではない。

WordPressの場合

WordPress 5.5以降、サイトマップは自動生成される(/wp-sitemap.xml)。ただしカスタマイズ性が低いため、SEOプラグインで管理するのが一般的だ。

プラグイン サイトマップ robots.txt おすすめ度
Yoast SEO 自動生成 + 除外設定 管理画面から編集可能 定番。初心者向け
All in One SEO 自動生成 + 画像/動画対応 管理画面から編集可能 多機能。中級者向け
Rank Math 自動生成 + インデックス制御 管理画面から編集可能 無料版でも高機能
XML Sitemaps サイトマップ専用 非対応 サイトマップだけ欲しい場合
# WordPress用 robots.txt の推奨設定 User-agent: * Disallow: /wp-admin/ Allow: /wp-admin/admin-ajax.php Disallow: /wp-includes/ Disallow: /wp-content/plugins/ Disallow: /wp-json/ Disallow: /?s= Disallow: /author/ Disallow: /tag/ Sitemap: https://あなたのドメイン/sitemap_index.xml

Point

WordPress自動生成のサイトマップ(/wp-sitemap.xml)とSEOプラグインのサイトマップは共存させない。SEOプラグインを導入した場合はWordPress標準のサイトマップを無効化しよう。Yoast SEOなら自動で無効化される。

SEO関連のツールを使ってみよう

構造化データの検証やURL一括チェックができるツールを無料で提供している。登録不要でブラウザだけで使える。

よくある質問

sitemap.xmlがないとGoogleにインデックスされませんか?
sitemap.xmlがなくてもGoogleはリンクを辿ってページを発見できる。ただし新規サイトやリンクが少ないページはsitemap.xmlがないと発見が遅れる。特に公開直後のサイトでは必ず設置してSearch Consoleから送信すべきだ。
robots.txtがないとどうなりますか?
robots.txtがない場合、クローラーはサイト内のすべてのページをクロール対象とみなす。小規模サイトでは問題ないが、管理画面や検索結果ページなど不要なURLまでクロールされ、クロールバジェットを浪費する可能性がある。
sitemap.xmlにすべてのURLを記載すべきですか?
検索エンジンにインデックスしてほしいURLだけを記載する。noindexを設定したページ、リダイレクト元のURL、404ページ、パラメータ付きの重複URLは含めない。sitemap.xmlはGoogleに「このURLは正規でインデックスに値する」と伝えるものだ。
robots.txtでDisallowしたページはインデックスから消えますか?
消えるとは限らない。robots.txtでブロックしてもGoogleは外部リンク等からURLを知っている場合、タイトルやスニペットなしでインデックスに残すことがある。確実にインデックスから削除したい場合はnoindexメタタグを使い、robots.txtではブロックしないこと。
changefreqとpriorityは本当に無視されますか?
Googleは公式にchangefreqとpriorityを「ほぼ使用していない」と明言している。Bingは一部参照するとされているが、SEO効果は限定的だ。記載しても害はないが、過度に期待しないこと。SEOで重要なのはlocとlastmodの2つだけだ。
sitemap.xmlを更新したらSearch Consoleに再送信すべきですか?
再送信は推奨されるが必須ではない。Googleは定期的にsitemap.xmlを再取得している。ただし大幅なURL追加(新規コンテンツの大量公開など)の場合は、Search Consoleから再送信したほうがインデックスが速くなる。
サブドメインにも別のsitemap.xmlが必要ですか?
はい。サブドメイン(例: blog.example.com)は別サイト扱いのため、それぞれにsitemap.xmlが必要だ。Search Consoleでもサブドメインごとにプロパティを追加してサイトマップを送信する。メインドメインのサイトマップインデックスからサブドメインのサイトマップを参照することも可能だ。