robots.txt を1行間違えたらサイトが検索結果から消えた
結論:robots.txt は「何を禁止するか」だけ書く
robots.txt でやることは1つ。クローラーに「ここは見に来ないで」と伝えるだけ。
逆に「ここを見て」とは書けない。Allow は「Disallow の例外」であって、「インデックスしてくれ」という意味ではない。
私がサイトを検索から消した話
ステージング環境を本番にコピーしたとき、robots.txt もそのままコピーした。
User-agent: *
Disallow: /
ステージングでは正しい設定。本番では致命的。サイト全体がクロール拒否になった。
3日後、「サイト名で検索しても出てこない」と連絡が来て気づいた。修正してからインデックスが戻るまで2週間かかった。
たった1行、/ を書いただけで2週間の損失。
robots.txt の基本構文
User-agent: *
Disallow: /admin/
Disallow: /tmp/
Allow: /admin/public/
Sitemap: https://example.com/sitemap.xml
| 項目 | 意味 |
|---|---|
| User-agent | 対象のクローラー(* は全員) |
| Disallow | クロールを拒否するパス |
| Allow | Disallow の例外として許可するパス |
| Sitemap | サイトマップのURL(任意) |
書かなければ全ページクロール許可。 何も制限しないなら、空の robots.txt を置くか、ファイル自体を置かないでいい。
よくある事故
事故1:Disallow: / を本番に置いた
ステージングや開発環境のコピーで起きる。デプロイ手順に robots.txt の確認を入れるべき。
事故2:Disallow のパスにスラッシュを付け忘れた
# 間違い — /admin-page なども拒否される
Disallow: /admin
# 正しい — /admin/ 配下だけ拒否
Disallow: /admin/
末尾スラッシュの有無でマッチ範囲が変わる。/admin は /admin-page や /administrator にもマッチする。
事故3:noindex と混同した
robots.txt の Disallow は「クロールしないで」であって「インデックスから消して」ではない。
| やりたいこと | 正しい方法 |
|---|---|
| ページをクロールさせない | robots.txt の Disallow |
| ページをインデックスから消す | <meta name="robots" content="noindex"> |
| 両方 | noindex だけで十分(クロールされないと noindex も読めない) |
Disallow したページがインデックスに残り続けることがある。 確実に消したいなら noindex を使う。
WordPress の場合
WordPress は /wp-admin/ の robots.txt を自動生成する。自動生成の内容を確認せずに放置するのは危険。
確認方法
https://あなたのサイト.com/robots.txt
ブラウザでアクセスするだけ。
WordPress でよく入れる設定
User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Sitemap: https://example.com/sitemap.xml
/wp-admin/admin-ajax.php は Allow にする。テーマやプラグインがフロントエンドから使うため、ブロックすると動作に影響が出る。
/wp-includes/ や /wp-content/uploads/ を Disallow にしない。 画像やCSS・JSのクロールをブロックすると、Google がページを正しくレンダリングできなくなる。
Google Search Console で確認する
robots.txt を書いたら、Google Search Console で確認する。
確認すべきこと:
- トップページがブロックされていないか
- 主要ページがブロックされていないか
- サイトマップがブロックされていないか
- 意図しないパスが巻き込まれていないか
書いて終わりではない。確認するまでがセット。
最低限のテンプレート
何も制限しない場合
User-agent: *
Disallow:
Sitemap: https://example.com/sitemap.xml
管理画面だけブロック
User-agent: *
Disallow: /admin/
Disallow: /api/
Disallow: /tmp/
Sitemap: https://example.com/sitemap.xml
AI クローラーだけブロック
User-agent: GPTBot
Disallow: /
User-agent: *
Disallow: /admin/
Sitemap: https://example.com/sitemap.xml
AI クローラーをブロックしたい場合は、User-agent を指定して個別に拒否する。* でまとめて拒否すると Google も巻き込む。
まとめ
- robots.txt は「クロール拒否」だけを書くファイル
Disallow: /を本番に置くとサイトが検索から消える- noindex とは別物。インデックス削除には noindex を使う
- 書いたら Google Search Console で必ず確認する