Rudra Analyzer

SEO

robots.txt と sitemap.xml を具体例でわかりやすく解説

サイトのルートにある2つの小さなファイルが、クローラーに対して、どこを巡回してよいか、どのページを見つけてほしいかを伝えます。それぞれの仕組みを具体例とともに紹介します。

執筆:Rudra Techno Team 読了時間 8分
このページの内容

ウェブサイトのルートに置く2つのシンプルなファイルが、検索エンジンによるサイトの処理を助けます。robots.txt は、サイトのどの部分をクロールしてよく、どの部分をクロールしてはいけないかをクローラーに伝えます。sitemap.xml は、見つけてほしいページを一覧にしたものです。両者は組み合わせるとうまく機能しますが、どちらも、ページがインデックスされることや検索結果に出ないことを保証するものではありません。以下で紹介する問題のほとんどは、この点の誤解から生じています。

robots.txt の役割

robots.txt はプレーンテキストのファイルで、https://example.com/robots.txt のように、ホストのルートに置かなければなりません。適用されるのはそのプロトコルとホストの組み合わせだけなので、shop.example.com には専用のファイルが別に必要です。Googlebot や Bingbot など、Robots Exclusion Protocol に従うクローラーは、クロールの前にこのファイルを読み、そのルールに従います。

これは一連の「お願い」であって、セキュリティ機能ではありません。行儀の悪いボットは無視できますし、ファイル自体も公開されているので、「秘密の」フォルダーをここに書くと、かえってそのフォルダーの存在を知らせることになります。非公開のコンテンツは認証で保護してください。

シンプルな robots.txt の例

  • User-agent: *
  • Disallow: /admin/
  • Disallow: /cart
  • Disallow: /search
  • Sitemap: https://example.com/sitemap.xml

1行ずつ見ていきましょう。このルールはすべてのクローラー(*)に適用されます。/admin/ 以下のすべてと、/cart または /search で始まるURLはクロールしないよう指示しています。そして、サイトマップは記載されたアドレスにあります。Sitemap の行は完全なURLで書く必要があり、どの user-agent グループの中に置かれていても適用されます。

ルールの読み取られ方

  • ルールはURLパスの先頭と照合され、大文字と小文字が区別されます。Disallow: /Admin は /admin をブロックしません。
  • Google は2種類のワイルドカードに対応しています。任意の文字列を表す * と、URLの末尾を表す $ です。Disallow: /*.pdf$ は、.pdf で終わるURLをブロックします。
  • Allow と Disallow のルールが競合する場合、Google は最も具体的な(最も長い)一致するルールに従い、長さが同じなら Allow が優先されます。
  • クローラーは、自分を名指ししている最も具体的なグループにだけ従います。User-agent: Googlebot のグループがあると、Googlebot は User-agent: * のグループを完全に無視するので、共通のルールはそちらにも繰り返し書いてください。
  • Disallow: / はサイト全体をブロックします。値が空の Disallow: は何もブロックしません。

クロールのブロックは、インデックスのブロックではない

これが robots.txt について最も重要な点です。Disallow に指定したURLでも、他のページからリンクされていれば、たいていは説明文のない状態で検索結果に表示されることがあります。Google はそのURLが存在することは知っていても、中身を読んでいないからです。ページを検索結果に出さないようにするには、クロールを許可したうえで、noindex ディレクティブを追加します。HTML に <meta name="robots" content="noindex"> を記述するか、レスポンスヘッダーで X-Robots-Tag: noindex を返すかのどちらかです。robots.txt でそのページをブロックしていると、Google が noindex を目にすることはありません。

Google が無視するルール

Google は robots.txt 内の noindex に対応しておらず(この非公式のルールへの対応は2019年に終了しました)、Crawl-delay も無視します。Bing は Crawl-delay に従います。Googlebot がサーバーに過大な負荷をかけている場合は、サーバーの処理能力を見直すか、緊急時には一時的に 503 または 429 のレスポンスを返してください。

sitemap.xml の役割

XML サイトマップは、検索エンジンにクロールしてインデックスしてほしい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-09-20</lastmod></url>
  • <url><loc>https://example.com/pricing</loc><lastmod>2026-08-02</lastmod></url>
  • </urlset>
  • サイズの上限:1つのサイトマップファイルには、最大50,000件のURLを記載でき、非圧縮で最大50MBまでです。これより大きなサイトでは、URLを複数のサイトマップに分割し、サイトマップインデックスファイルにそれらを列挙します。
  • lastmod:Google は、最終更新日が一貫して正確であれば、その値を利用します。デプロイのたびにではなく、ページの内容に意味のある変更があったときに更新してください。
  • priority と changefreq:Google はどちらも無視するので、調整する必要はありません。
  • インデックスさせたいURLだけを記載する:200 を返す、インデックス可能な正規のページです。リダイレクト、エラーページ、noindex のページ、トラッキングパラメーターの付いた重複URLは含めないでください。

サイトマップの作成と送信

手作業で書く必要はほとんどありません。WordPress はバージョン 5.5 以降、基本的なサイトマップを /wp-sitemap.xml に生成しており、SEO プラグインを使うとプラグイン独自のものに置き換わります。Shopify やほとんどのホスティング型サイト作成サービスは /sitemap.xml を自動で作成します。Next.js では、app/sitemap.ts ファイルがサイトマップを生成します。サイトマップができたら、その場所を2つの方法で検索エンジンに伝えます。robots.txt に Sitemap: の行を追加することと、Google Search Console の「サイトマップ」レポート(および Bing Webmaster Tools)で送信することです。送信すると、Search Console に、サイトマップを読み取れたかどうかと、記載されたURLのうち何件がインデックスされているかが表示されます。

robots.txt とサイトマップを確認する方法

まず、/robots.txt とサイトマップのURLの両方をブラウザで開いてみましょう。次に、確認したいページを Rudra の無料 SEO チェッカーにかけます。チェッカーは robots.txt を取得し、汎用の * user-agent に対してテスト対象のページがブロックされているかどうか、サイトマップが宣言されているかどうかを報告します。続いてサイトマップを探し(宣言された場所、なければ /sitemap.xml と /sitemap_index.xml)、サイトマップまたはサイトマップインデックスとして解析できるかを確認して、各エントリに lastmod の日付があるか、テスト対象のURLが記載されているかを報告します。

Google 自身からどう見えているかを知るには、Search Console の robots.txt レポートと URL 検査ツールを使います。特定のURLがブロックされているかどうか、インデックスされているかどうかがわかります。

よくある間違い

  • ステージング用の robots.txt のまま公開する:開発時の Disallow: / が残っていると、本番サイト全体がブロックされることがあります。公開当日に robots.txt を確認しましょう。
  • CSS と JavaScript をブロックする:ページのレンダリングに必要なファイルをブロックすると、Google は訪問者と同じようにページを見ることができません。
  • Google からページを削除するために robots.txt を使う:noindex を使う(そしてページのクロールを許可する)か、急ぐ場合は Search Console の削除ツールを使ってください。
  • 同じページで robots.txt によるブロックと noindex を併用する:これでは noindex が読み取られなくなります。
  • サイトマップに誤ったURLを記載する:リダイレクト、404、noindex のページ、http:// 版、別のドメインなどです。
  • ビルドのたびにすべての lastmod を今日の日付にする:その日付は検索エンジンにとって役に立たなくなります。
  • robots.txt がサーバーエラーを返す:Google は、robots.txt が存在しない場合(404)は「すべてクロールしてよい」と解釈しますが、5xx エラーの場合は、ファイルが再び取得できるようになるまでサイトのクロールを停止することがあります。

よくある質問

robots.txt ファイルは必要ですか?

必ずしも必要ではありません。クローラーを立ち入らせたくない場所がなければ、なくてもかまいません。robots.txt が 404 を返す場合は、すべてクロールしてよいという意味になります。それでも多くのサイトは、サイト内検索の結果のような価値の低い領域をブロックし、サイトマップの場所を示すために robots.txt を設置しています。

XML サイトマップは必要ですか?

内部リンクが整っている小規模なサイトは、たいていサイトマップがなくても発見されます。ただ、サイトマップは手間がほとんどかからず、検索エンジンが新しいページや更新されたページをより早く見つける助けになります。最も恩恵を受けるのは、大規模なサイト、新しいサイト、階層が深いページやリンクの少ないページを持つサイトです。

サイトマップにページを追加すればインデックスされますか?

いいえ。サイトマップは検索エンジンがURLを発見する助けにはなりますが、ページがインデックスされるかどうかは、その品質、他のページと重複していないか、クロール可能で noindex が指定されていないかによって決まります。

robots.txt で AI クローラーをブロックするにはどうすればよいですか?

GPTBot(OpenAI)や CCBot(Common Crawl)など、ブロックしたいクローラーごとに user-agent グループを追加し、Disallow: / を指定します。Google-Extended は、Google 検索には影響を与えずに、Google があなたのコンテンツを AI モデルに利用してよいかどうかを制御します。これらのルールが効くのは、robots.txt を尊重することを選んでいるクローラーに対してだけです。

robots.txt と sitemap.xml はどこに置くべきですか?

robots.txt は、https://example.com/robots.txt のように、各ホストのルートに置かなければなりません。サイトマップはホスト上のどこに置いてもかまいませんが、/sitemap.xml とするのが一般的です。その場所を robots.txt で宣言し、Google Search Console で送信してください。

サイトをさらに詳しく分析したいですか?

サイトのすべての問題を、直すべき順に確認できます

アカウントなしでどのページも無料でチェックできます。登録すればサイト全体をクロールできます。各レポートはSEO、よくあるパフォーマンスの問題、アクセシビリティ、セキュリティを対象とし、すべての問題に修正案が付きます。