robots.txtの書き方|sitemap.xmlとインデックス対策
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.xmlUser-agent: *は、名前を明示する必要のある一部のクローラー(AdsBot など)を除くすべてのクローラーが対象です- パスは
/から始め、ルートからの相対で書きます Sitemapは完全な URL(https から)で書きます。複数行書いても構いません#以降はコメントになります
パスの一致ルール
- パスの大文字小文字は区別されます。
/File.aspと/file.aspは別物です *は 0 文字以上の任意の文字列、$は URL の末尾を表します。たとえばDisallow: /*.pdf$は PDF ファイルを対象にします- Allow と Disallow が競合するときは、より具体的な(一致する文字数の多い)ルールが優先されます。Google は、同じ具体性なら制限の緩いほうを使います
グループは上から順に評価され、該当する最初の User-agent グループだけが適用されます。複数のグループに共通のルールを書きたい場合は、各グループに繰り返す必要があります。
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 に公開される点にも注意が必要です。
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 レポートの「再クロールをリクエスト」を使います。
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 で保存します。
&などの特殊文字は&のようにエスケープします - 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 などを開いて存在を確認しましょう。
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 でブロックされたと表示されたページも、外部の情報によってインデックスされている場合があります。
ページがインデックスされない時のチェックリスト
「検索しても出てこない」ときは、次の順に原因を切り分けます。
- noindex が付いていないか: メタタグと X-Robots-Tag の両方を確認します。CMS の「検索エンジンがサイトをインデックスしないようにする」系の設定が有効なままになっている例があります
- robots.txt でブロックしていないか: URL 検査で、クロールが許可されているかを見ます
- HTTP ステータスが 200 か: 404、5xx、ログイン画面へのリダイレクトでは登録されません
- canonical が別 URL を指していないか: 正規 URL が別のページだと、そちらが優先されます
- サイトマップに入っているか、内部リンクがあるか: どこからもリンクされないページは発見されにくくなります
- Search Console のステータスを読む: 次の表の意味を確認します
| ステータス | 意味と対応 |
|---|---|
| robots.txt によってブロックされました | クロールが禁止されている。意図しないなら Disallow を外す。noindex 目的でも併用しない |
| noindex タグによって除外されました | 指定どおりの動作。登録したいなら noindex を外す |
| クロール済み - インデックス未登録 | 取得はしたが登録しなかった。再送信は不要。ページの内容や品質を見直す |
| 検出 - インデックス未登録 | 存在は把握したが、まだクロールしていない。サイトへの負荷を避けて延期された場合などがある |
| ユーザーにより選択された正規ページがない重複ページ | 重複と判断された。canonical を明示して正規ページを指定する |
「クロール済み - インデックス未登録」は、Google の判断で登録しなかった状態なので、設定を直しても即座に変わるとは限りません。内容が他ページと重複していないか、独自の価値があるか、内部リンクが十分かを見直し、しばらく待ちます。
サイトスカウターの SEO 診断で noindex・canonical を確認する
サイトスカウターの SEO 内部診断は、対象ページを 1 回取得し、メタタグと X-Robots-Tag を合わせて noindex・nofollow の指定を判定します。canonical が未設定か、自分自身か、別 URL かも確認できます。「インデックスされない」ときの最初の切り分けに使えます。
なお、この診断が見るのは対象ページ自体の指定です。robots.txt や sitemap.xml の中身を解析する機能ではないため、それらは本記事の手順で別途確認してください。
よくある質問
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。制度・仕様は変更されることがあるため、実施前に各一次情報をご確認ください。
- robots.txt の概要 | Google 検索セントラル
- robots.txt ファイルを作成して送信する | Google 検索セントラル
- Google による robots.txt の解釈 | Google 検索セントラル
- robots.txt を更新する | Google 検索セントラル
- noindex でインデックス登録をブロックする | Google 検索セントラル
- サイトマップの作成と送信 | Google 検索セントラル
- サイトマップの概要 | Google 検索セントラル
- RFC 9309: Robots Exclusion Protocol
- sitemaps.org Protocol
- robots.txt レポート | Search Console ヘルプ
- ページのインデックス登録レポート | Search Console ヘルプ