robots.txtとsitemap.xmlガイド:正しい設定とよくあるミス
AIで要約する
AIにこの記事を読ませて重要なポイントを要約させましょう。
サイトが検索から完全に消えるために必要なものは、時にたった1行です。
User-agent: * Disallow: /
この2行は、開発環境では正しくても、本番環境に誤って移されると、サイトをGoogleから消してしまいます。公開後に起こる技術的なミスの中でも、最もよくあり、最も代償が大きいものの一つです。
robots.txtとsitemap.xmlは、検索エンジンとの間で交わされる2つの基本的なコミュニケーションチャネルです。この記事では、それぞれが何をするのか、どう正しく書くのか、どこでよく間違えるのかを解説します。
robots.txtとは何か、何をするのか?
サイトのルートディレクトリ(yoursite.com/robots.txt)に置かれるプレーンテキストファイルです。検索エンジンのボットにどのURLをクロールしてはいけないかを伝えます。
重要な区別があります。robots.txtはクロールを止めますが、インデックスを止めるものではありません。
この2つは非常に混同されがちです。robots.txtであるページをブロックすると、Googleはそのページを読めなくなります。しかし他サイトからリンクされていれば、内容を見ないままインデックスすることがあります。結果として、検索結果に説明文のない不自然なリスティングが表示されてしまいます。
| 目的 | 正しい手段 | 理由 |
|---|---|---|
| ページを検索結果に出さない | noindexメタタグ | Googleがページを読んだ上でインデックスしないと学習する |
| ボットにサーバーへの負荷をかけさせない | robots.txtのdisallow | クロール自体が行われない |
| クロールもインデックスも両方止めたい | 先にnoindex、インデックスから外れたことを確認してからdisallow | ブロックされたページのnoindexはGoogleに読まれない |
最後の行が重要です。robots.txtでブロックされたページ内のnoindexタグは、Googleに読まれません。 ページをインデックスから外したい場合は、まずnoindexを設定し、実際にインデックスから外れたことを確認してからブロックしてください。
正しいrobots.txtの書き方
多くのサイトにとって、必要なファイルはこの程度でシンプルです。
User-agent: * Disallow: /wp-admin/ Disallow: /cart Disallow: /checkout Disallow: /search Allow: /wp-admin/admin-ajax.php Sitemap: https://yoursite.com/sitemap.xml
ルール:
User-agentは、どのボットに向けた指示かを示します。*はすべてのボットを意味します。Disallowはクロールされないパスを指定します。空欄(Disallow:)の場合、すべて許可という意味になります。AllowはDisallow内の例外を開きます。Sitemapの行はサイトマップの完全なURLを示します。複数記載できます。- ファイルはUTF-8でなければならず、ルートディレクトリに置く必要があります。サブフォルダのrobots.txtは無効です。
ブロックする意味があるもの:管理画面、カート・決済ステップ、サイト内検索の結果ページ、無限に生成されるフィルターの組み合わせ、個人情報を含む領域。
絶対にブロックしてはいけないもの: CSSとJavaScriptファイル。Googleはユーザーに見えるとおりにページをレンダリングするためにこれらを必要とします。ブロックするとページが崩れて表示され、モバイルフレンドリー評価にも悪影響を及ぼします。
sitemap.xmlとは何か?
サイトマップは、サイト内の重要なURLのリストです。Googleに「これらをクロールしてほしい」と伝える最も直接的な方法です。
基本構造:
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://yoursite.com/</loc>
<lastmod>2026-08-13</lastmod>
</url>
<url>
<loc>https://yoursite.com/services</loc>
<lastmod>2026-07-02</lastmod>
</url>
</urlset>
制限事項:1ファイルにつき最大50,000 URL、50MB(非圧縮)まで。より大規模なサイトではサイトマップインデックスを使います。
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <sitemap><loc>https://yoursite.com/sitemap-products.xml</loc></sitemap> <sitemap><loc>https://yoursite.com/sitemap-blog.xml</loc></sitemap> </sitemapindex>
分割して書くことの隠れたメリットは、Search Consoleでサイトマップごとに別々にレポートされる点です。これにより、サイトのどの部分がインデックスされていないかを直接把握できます。商品ページの90%はインデックスされているのにブログの30%しかされていなければ、問題の所在が一目でわかります。
サイトマップでよくある6つのミス
1. インデックスされるべきでないURLを載せる。 noindexになっている、canonicalが別のページを指している、301を返すURLはサイトマップに含めるべきではありません。サイトマップは「これは重要だ」という意味を持ち、canonicalは「これは正式版ではない」と言っています。この2つが矛盾すると、Googleがあなたのcanonicalタグを無視することがあります。
2. lastmodを毎日更新する。 コンテンツが変わっていないのに日付だけを更新すると、信頼を損ないます。しばらくするとGoogleはこの項目を見なくなります。実際にコンテンツが変わったときだけ更新してください。
3. priorityとchangefreqに意味を持たせる。 Googleはこの2つの項目をほぼ無視しています。時間をかける価値はありません。
4. 異なるプロトコルやサブドメインを混在させる。 サイトマップ内のURLは、サイトマップが置かれているドメインと同じで、かつcanonicalバージョンと一致している必要があります。
5. 404を返すURLを残す。 削除されたページはサイトマップからも削除する必要があります。そうしないとクロールバジェットが無駄になります。
6. サイトマップを一度も送信しない。 ファイルを作成した後、Search Consoleへの登録を忘れることはよくあります。robots.txtにSitemap:の行を追加しておくのも有効です。
クロールバジェットとの関係
小規模なサイトにとって、クロールバジェットは問題になりません。しかし数万のURLを生成するサイトでは、次のような悪循環が生まれます。Googleは限られた数のページしかクロールしません。それらのフィルターの組み合わせで埋め尽くされていると、本当に重要な商品ページまで順番が回ってきません。
この場合、robots.txtは実質的なレバレッジになります。
- 無限に生成されるフィルターの組み合わせをブロックする(
Disallow: /*?color=) - サイト内検索の結果ページをブロックする
- カレンダー・日付ベースの無限ページをブロックする
ただし注意点があります。ブロックしたページへ向けている内部リンクは、そこで行き止まりになります。ブロックする前に、そのページへ向かう内部リンク構造を見直してください。
公開後の検証
yoursite.com/robots.txtをブラウザで開く。 200が返り、内容が読めることを確認します。- Search Console → 設定 → robots.txtレポートで、ファイルが取得されエラーがないことを確認します。
- URL検査ツールでいくつかの重要なページをテストします。「クロールは許可されていますか?」の行がはいになっているべきです。
- サイトマップをSearch Consoleに送信し、数日後に「検出されたURL数」と「インデックスに登録された数」を比較します。
- 差が大きい場合は、ページレポートの除外理由を確認します。
これらの手順はすべて、Search Consoleガイドで画面付きで解説しています。
公開時のチェックリスト
新しいサイトを公開するとき、最も見落とされがちな2項目です。
- 開発環境用の
Disallow: /の行は削除されているか? - テーマ・テンプレート設定の「検索エンジンをブロックする」オプションはオフになっているか?
どちらもワンクリックで直るミスですが、気づくまでに何週間もかかることがあります。公開当日にまずやるべきことは、robots.txtを開いて確認することです。より広範なチェックにはテクニカルSEOチェックリストをご覧ください。
よくある質問
robots.txtがないサイトはペナルティを受けますか?
いいえ。ファイルがなければ、Googleはすべてクロール可能と見なします。とはいえサイトマップの行を記載できるため、作成しておくメリットはあります。
AIボットをブロックすべきですか?
判断はあなた次第です。GPTBot、ClaudeBot、PerplexityBotのようなユーザーエージェントは、robots.txtでブロックできます。ただし、コンテンツがAIの回答で情報源として引用されることを望むなら、ブロックすることで可視性を失います。このバランスについてはGEOガイドで論じています。
サイトマップはどのくらいの頻度で更新すべきですか?
自動生成にしてください。CMSが新しいページを追加した際にサイトマップを更新しないなら、手動でのメンテナンスは持続可能ではありません。
ブロックしたページがまだGoogleに表示されるのはなぜですか?
robots.txtはクロールを止めますが、インデックスは止めません。ページをインデックスから外すにはnoindexが必要です。そしてnoindexが読まれるためには、ページがクロール可能である必要があります。
関連記事:
SEOを自動化しましょう
テクニカルSEOのエラーをワンクリックで発見し、オーガニックトラフィックを飛躍的に向上させます。
SEOを自動化しましょう
テクニカルSEOのエラーをワンクリックで発見し、オーガニックトラフィックを飛躍的に向上させます。