robots.txtの書き方|sitemap.xmlとインデックス対策

SEO 公開 2026-10-06 / 最終確認 2026-10-06 / サイトスカウター編集部

robots.txt は、検索エンジンのクロール(巡回)をサイト側から制御するためのテキストファイルです。サイトのルート直下(https://example.com/robots.txt)に置き、User-agent・Disallow・Allow・Sitemap の指示を書きます。

最も重要な注意点は、robots.txt はインデックス(検索結果への登録)を防ぐ仕組みではないことです。Google の公式ドキュメントは、robots.txt で禁止したページでも、他サイトからリンクされていればインデックスされ得ると説明しています。検索結果から外したいなら noindex を使います。しかも noindex を機能させるには、そのページを robots.txt でブロックしていないことが条件です。

この記事では、robots.txt の書き方と置き場所、Disallow と noindex の違い、起こりがちな事故、sitemap.xml の書き方と上限(1 ファイル 50,000 URL・50MB)、確認方法、インデックスされないときのチェックリストを整理します。情報は 2026 年 10 月 6 日時点で Google 検索セントラル、RFC 9309、sitemaps.org を確認したものです。

robots.txt の書き方と置き場所

置き場所とファイルの条件

  • ファイル名は robots.txt ちょうど。サブディレクトリには置けず、サイトのルート(例: https://www.example.com/robots.txt)に置きます
  • UTF-8 のテキストファイル。ワープロソフトではなくテキストエディタで作ります
  • サイトのホスト(サブドメイン・プロトコル・ポート)ごとに別のファイルが対象になります。blog.example.com には別途 blog.example.com/robots.txt が必要です
  • Google は 500 KiB までを処理し、超えた部分は無視します。RFC 9309 でも、クローラーが最低 500 KiB を解析することが定められています

基本の書式

指示は「グループ」単位で、User-agent の行で対象のクローラーを指定し、その下に Disallow(クロール禁止)や Allow(許可)を書きます。

User-agent: *
Disallow: /admin/
Disallow: /search
Allow: /admin/public/

Sitemap: https://example.com/sitemap.xml
  • User-agent: * は、名前を明示する必要のある一部のクローラー(AdsBot など)を除くすべてのクローラーが対象です
  • パスは / から始め、ルートからの相対で書きます
  • Sitemap は完全な URL(https から)で書きます。複数行書いても構いません
  • # 以降はコメントになります

パスの一致ルール

  • パスの大文字小文字は区別されます。/File.asp と /file.asp は別物です
  • * は 0 文字以上の任意の文字列、$ は URL の末尾を表します。たとえば Disallow: /*.pdf$ は PDF ファイルを対象にします
  • Allow と Disallow が競合するときは、より具体的な(一致する文字数の多い)ルールが優先されます。Google は、同じ具体性なら制限の緩いほうを使います

グループは上から順に評価され、該当する最初の User-agent グループだけが適用されます。複数のグループに共通のルールを書きたい場合は、各グループに繰り返す必要があります。

図1 robots.txt の構造
User-agentどのクローラーへの指示かDisallowクロールを禁止するパスAllow禁止の例外として許可するパスSitemapサイトマップの完全 URL

robots.txt の Disallow と noindex の違い(ブロックしてもインデックスされる)

この 2 つは名前が似ていますが、役割がまったく違います。

  • Disallow(robots.txt): クローラーに「このページを取得しないで」と頼む。管理するのはクロール
  • noindex: 取得したページに「検索結果に載せないで」と指示する。管理するのはインデックス

Google 検索セントラルは、robots.txt は Google 検索結果から Web ページを除外する仕組みではないと説明しています。robots.txt で禁止されたページでも、他のサイトからリンクされていればインデックスされ得ます。その場合、ページの中身は取得されないため、検索結果にはスニペット(説明文)なしで URL とリンク元のアンカーテキストなどが表示されることがあります。

noindex の書き方

HTML の <head> にメタタグを入れるか、HTTP レスポンスヘッダーで指定します。PDF や画像など HTML でないファイルにはヘッダー方式を使います。

<!-- 全検索エンジン向け -->
<meta name="robots" content="noindex">

<!-- Google のみ -->
<meta name="googlebot" content="noindex">

# HTTP レスポンスヘッダー
X-Robots-Tag: noindex

最大の落とし穴: noindex と Disallow の併用

noindex が効くのは、クローラーがそのページを取得して noindex を読めたときだけです。Google は、noindex を有効にするにはページを robots.txt でブロックしていないことが必要だと明記しています。「検索結果から消したい」ページを robots.txt で Disallow すると、noindex が読まれず、かえって URL が残り続ける原因になります。

手順としては、まず Disallow を外して noindex を読ませ、検索結果から消えたことを確認してから、必要であればクロール制御を考えます。会員ページや個人情報など、見せてはいけないものは robots.txt や noindex ではなく、認証(ログイン)で保護してください。RFC 9309 も、robots.txt は「アクセス認可の一形態ではない」と明記しています。Disallow に書いたパスは、誰でも読める robots.txt に公開される点にも注意が必要です。

図2 Disallow と noindex の役割
× Disallow×制御するのはクロール×robots.txt に書く×リンクがあればURLは載り得る×非公開の手段ではない○ noindex○制御するのはインデックス○メタタグ/ヘッダーで指定○取得できて初めて読まれる○robots.txtで遮断しない

robots.txt のよくある事故(全体 Disallow・CSS/JS のブロック)

事故 1: サイト全体を Disallow したまま公開

開発中の環境で使った以下の設定を、そのまま本番に反映してしまうケースです。サイト全体のクロールが止まり、検索流入が失われる恐れがあります。

User-agent: *
Disallow: /

公開前チェックリストに「robots.txt の中身」を加え、リリース後にも本番の /robots.txt を直接開いて確認してください。なお、すべて許可するなら Disallow: に値を書かないか、ファイル自体を置かない(4xx で返す)方法があります。Google は 4xx を robots.txt が存在しないものとして扱い、制限なしでクロールします(429 を除く)。

事故 2: CSS・JavaScript・画像をブロックする

Google は、リソースファイルがないとページの理解が難しくなる場合、それらをブロックしないよう案内しています。ブロックすると、ページを正しく解析できなくなるためです。/assets/ や /wp-includes/ を一括で Disallow している古い設定は見直してください。

事故 3: サーバーエラー(5xx)で robots.txt が返る

RFC 9309 では、5xx で取得できない場合、クローラーは全体が Disallow であるものとみなすべきとされています。Google の場合は 12 時間クロールを止め、その後は 30 日間キャッシュ済みのファイルを使う挙動です。robots.txt が 5xx を返す状態を放置すると、クロール全体に影響します。

事故 4: 変更が反映されない

Google は robots.txt を最長 24 時間程度キャッシュします。急ぎの場合は、Search Console の robots.txt レポートの「再クロールをリクエスト」を使います。

図3 robots.txt の NG 例と OK 例
× NG例×Disallow: / のまま公開×/assets/ を一括で禁止×非公開情報を Disallow だけで隠す×5xx が返る状態を放置○ OK例○公開前後に本番を確認○CSS/JS/画像は許可○隠すものは認証で保護○常に 200 で返す

sitemap.xml の書き方・送信方法・上限

sitemap.xml は、サイト内のページ一覧をクローラーに伝えるファイルです。Google は XML のほか、RSS・mRSS・Atom 1.0、テキスト形式(URL を 1 行ずつ)にも対応しています。

基本の書き方

<?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-10-06</lastmod>
  </url>
  <url>
    <loc>https://example.com/articles/robots-txt-sitemap</loc>
    <lastmod>2026-10-06</lastmod>
  </url>
</urlset>
  • 必須は urlset、url、loc です。それ以外は任意です
  • UTF-8 で保存します。& などの特殊文字は &amp; のようにエスケープします
  • URL は完全な絶対 URL で、正規(canonical)の URL だけを載せます
  • lastmod は実際にページを更新した日時にします。Google は、検証できる形で一貫して正確な場合に lastmod を利用します。著作権表示の年の更新などは対象外です
  • priority と changefreq は Google には無視されます

上限

sitemaps.org のプロトコルと Google の両方で、1 つのサイトマップは最大 50,000 URL かつ 50MB(非圧縮)です。超える場合は複数のサイトマップに分割し、サイトマップインデックス(各サイトマップを列挙するファイル)を作ります。インデックス自体も、最大 50,000 件・50MB までです。

置き場所と範囲

サイトマップに載せられるのは、そのファイルと同じプロトコル・同じホストの URL です。また、/catalog/sitemap.xml に置くと、載せられるのは /catalog/ 以下の URL だけです。全体を対象にするなら、ルート直下に置きます。

送信方法

  • Search Console の「サイトマップ」レポートから URL を送信する
  • robots.txt に Sitemap: https://example.com/sitemap.xml を書く。Google は次に robots.txt をクロールしたときに認識します
  • Search Console API を使う

なお、サイトマップはインデックスを保証するものではありません。Google は、サイトマップ内のすべての項目がクロール・インデックスされることは保証しないと説明しています。また、ページ数が約 500 ページ以下で、内部リンクで十分たどれるサイトでは、サイトマップが不要な場合もあるとされています。WordPress などの CMS は自動生成していることが多いので、まず /sitemap.xml などを開いて存在を確認しましょう。

図4 サイトマップ公開から送信まで
1URL一覧を作成2XMLで保存3ルート直下に設置4robots.txtに記載5サーチコンソール送信6ステータス確認

robots.txt テスターと URL 検査での確認方法

書いた設定は、必ず実際に検証します。

1. ブラウザで直接開く

Google は、アップロード後にシークレットウィンドウなどで /robots.txt の URL を開き、公開されていることを確認するよう案内しています。文字化けや、HTML のエラーページが返っていないかも見ます。

2. Search Console の robots.txt レポート

Google が見つけた robots.txt(上位 20 ホスト)について、最終クロール日時、取得ステータス(Fetched / Not Fetched / Not Found)、ファイルサイズ、解析上のエラーや警告を確認できます。古い「robots.txt テスター」とは別の画面で、特定の URL がブロックされているかを調べる用途には、次の URL 検査を使います。

3. URL 検査ツール

個別の URL について、robots.txt によりクロールがブロックされていないか、noindex が検出されていないか、インデックス状況はどうかを確認できます。

4. ページのインデックス登録レポート

「robots.txt によってブロックされました」「noindex タグによって除外されました」など、除外の理由がサイト全体で一覧できます。robots.txt でブロックされたと表示されたページも、外部の情報によってインデックスされている場合があります。

図5 設定後の確認ポイント
本番URL/robots.txt が200で開く文字コードUTF-8で文字化けなしレポートrobots.txtレポートでFetched個別URLURL検査でブロックされずサイトマップ送信し「成功」と表示除外理由ページ登録レポートで確認

ページがインデックスされない時のチェックリスト

「検索しても出てこない」ときは、次の順に原因を切り分けます。

  1. noindex が付いていないか: メタタグと X-Robots-Tag の両方を確認します。CMS の「検索エンジンがサイトをインデックスしないようにする」系の設定が有効なままになっている例があります
  2. robots.txt でブロックしていないか: URL 検査で、クロールが許可されているかを見ます
  3. HTTP ステータスが 200 か: 404、5xx、ログイン画面へのリダイレクトでは登録されません
  4. canonical が別 URL を指していないか: 正規 URL が別のページだと、そちらが優先されます
  5. サイトマップに入っているか、内部リンクがあるか: どこからもリンクされないページは発見されにくくなります
  6. Search Console のステータスを読む: 次の表の意味を確認します
ステータス意味と対応
robots.txt によってブロックされましたクロールが禁止されている。意図しないなら Disallow を外す。noindex 目的でも併用しない
noindex タグによって除外されました指定どおりの動作。登録したいなら noindex を外す
クロール済み - インデックス未登録取得はしたが登録しなかった。再送信は不要。ページの内容や品質を見直す
検出 - インデックス未登録存在は把握したが、まだクロールしていない。サイトへの負荷を避けて延期された場合などがある
ユーザーにより選択された正規ページがない重複ページ重複と判断された。canonical を明示して正規ページを指定する

「クロール済み - インデックス未登録」は、Google の判断で登録しなかった状態なので、設定を直しても即座に変わるとは限りません。内容が他ページと重複していないか、独自の価値があるか、内部リンクが十分かを見直し、しばらく待ちます。

図6 インデックスされない時の確認順
noindexメタ・ヘッダーとも付いていないrobots.txt対象URLがブロックされていないステータスHTTP 200 を返しているcanonical自分自身か意図したURL内部リンク他ページからリンクされているサイトマップ対象URLが含まれている

サイトスカウターの SEO 診断で noindex・canonical を確認する

サイトスカウターの SEO 内部診断は、対象ページを 1 回取得し、メタタグと X-Robots-Tag を合わせて noindex・nofollow の指定を判定します。canonical が未設定か、自分自身か、別 URL かも確認できます。「インデックスされない」ときの最初の切り分けに使えます。

なお、この診断が見るのは対象ページ自体の指定です。robots.txt や sitemap.xml の中身を解析する機能ではないため、それらは本記事の手順で別途確認してください。

サイトスカウターで調べる

noindex や canonical の指定が意図どおりか、SEO 内部診断でページ単位に無料チェックできます。

SEO内部診断を使う

よくある質問

robots.txt でブロックすれば検索結果に表示されなくなりますか?

なりません。Google は、robots.txt で禁止したページでも他サイトからリンクされていればインデックスされ得ると説明しています。検索結果から外すには noindex を使い、そのページを robots.txt でブロックしないでください。

noindex と Disallow は併用できますか?

併用は避けてください。Disallow でクロールを止めると、クローラーが noindex を読み取れません。noindex を効かせたいページは、robots.txt でブロックしないことが条件です。

sitemap.xml の上限はありますか?

1 つのサイトマップは最大 50,000 URL かつ 50MB(非圧縮)です。超える場合は複数に分割し、サイトマップインデックスで束ねます。インデックスも最大 50,000 件・50MB です。

robots.txt を変更したのに反映されないのはなぜですか?

Google は robots.txt を最長 24 時間ほどキャッシュします。急ぐ場合は、Search Console の robots.txt レポートにある再クロールのリクエストを使います。

サイトマップを送信すれば必ずインデックスされますか?

されません。Google は、サイトマップ内のすべての URL がクロール・インデックスされることは保証しないと説明しています。内容の品質、内部リンク、noindex や canonical の指定もあわせて確認してください。

出典・参考資料

最終確認日:2026-10-06。制度・仕様は変更されることがあるため、実施前に各一次情報をご確認ください。

本記事は一般的な情報提供を目的としており、法的助言ではありません。被害に遭われた場合や判断に迷う場合は、消費者ホットライン(188)や警察相談専用電話(#9110)などの公的窓口にご相談ください。