robots.txt 設定:許可・拒否ルール、よくあるミスとテスト方法
1. robots.txt が制御するもの、しないもの
robots.txt はサイトのルートディレクトリに置くテキストファイルで、検索エンジンのクローラーに「どのパスはクロールしてよく、どのパスはダメか」を伝えます。これは紳士協定です。ルールを守るクローラー(Googlebot、Bingbot)は従いますが、守らないクローラー(迷惑収集ツール)はこのファイルを読みません。
最も重要な認識:robots.txt が制御するのは「クロール」であり「インデックス」ではありません。この2つはよく混同されます。あるパスを Disallow すると、Googlebot はそのパス配下のページをクロールしません。しかし外部リンクがこれらの URL を指していると、Google は URL の存在を把握し、検索結果に URL 自体を表示します。タイトルも説明も内容の要約もなく、裸のリンクが並ぶだけです。
| よくある誤解 | 実際の状況 | 結果 |
|---|---|---|
| Disallow すれば SERP に出ない | 外部リンクのある URL は SERP に残る | タイトルも説明もない裸の URL |
| robots.txt でインデックスを防げる | 不可。インデックス防止は noindex | ページは検索結果に表示され続ける |
| robots.txt で競合他社の閲覧を防げる | 誰でも /robots.txt にアクセスできる | むしろ公開情報になる |
| robots.txt のルールは多いほどよい | 1行のミスでサイト全体が消える | 設定は最小限にすべき |
| robots.txt で機密ページを守れる | 紳士協定。悪意あるクローラーは守らない | 機密ページはパスワードで保護する |
他の SEO モジュールとの関係:robots.txt はGoogle SEO技術基盤の最下層の設定で、XML Sitemap 最適化と組み合わせて使います。robots.txt の末尾に Sitemap の場所を宣言すると、Google は robots.txt 経由で Sitemap を発見します。そしてテクニカル SEO 監査チェックリストとの関係:robots.txt はクロール判定の第1チェック項目です。
二、ルールの文法:User-agent、Disallow、Allow、Sitemap
robots.txt の文法はとてもシンプルで、核心となる指令は4つだけです。ただしシンプルだからといって書き間違えないわけではありません。スラッシュの向きひとつ、アスタリスクの位置ひとつで、ルールの意味が変わってしまいます。
| 指令 | 書き方の例 | 役割 | 注意点 |
|---|---|---|---|
| User-agent | User-agent: * | どのクローラーにルールを適用するかを指定します | * はすべてのクローラーを意味し、ルールグループの先頭行に置く必要があります |
| Disallow | Disallow: /admin/ | このパス配下のすべてのページのクロールをブロックします | スラッシュで終わるとディレクトリ全体を意味します |
| Allow | Allow: /admin/public/ | 上位の Disallow でカバーされているサブパスでもクロールを許可します | 細かい上書きに使いますが、すべてのクローラーが対応しているわけではありません |
| Sitemap | Sitemap: https://… | Sitemap の場所を宣言します | ファイルの末尾に置き、ルールグループとは独立させます |
| ワイルドカード * | Disallow: /*?sort= | 任意の文字列にマッチします | パラメータ付き URL をブロックするのに使います |
| 末尾の $ | Disallow: /test.html$ | その文字列で終わる URL に完全一致します | 単一ファイルをピンポイントでブロックするのに使います |
標準的な B2B サイトの robots.txt はどう書くべきでしょうか。核心となる設定は次のとおりです。先頭は User-agent: * で始め、Disallow で admin、cart、checkout などの機能的なパスをブロックし、パラメータ付きの絞り込みや並べ替えの URL もブロックします。末尾に Sitemap の場所を宣言します。商品ページ、記事ページ、カテゴリページには何も書きません。デフォルトでクロールが許可されているからです。
ケース1:ある EC 系 B2B サイトの robots.txt に Disallow: /products/ と書いてありました。意図は商品一覧ページのページネーション版をブロックすることでしたが、結果としてすべての商品ページをブロックしてしまいました。3週間後、Google でブランド名を検索すると、SERP にはトップページと会社概要ページしか表示されず、商品ページはすべて消えていました。修正方法は、ルールを Disallow: /products/?page= に変え、ページネーションパラメータ付きの URL だけをブロックし、/products/ 自体はブロックしないようにします。GSC の robots テストツールで1件ずつ検証してから公開しましょう。
三、2つの致命的なミス:サイト全体のブロックとツールの誤用
robots.txt のミスには大小ありますが、2つは致命的です。一度でも犯すと、サイト全体が検索結果から消えてしまいます。
| 誤りのタイプ | 症状 | 気づくきっかけ | 修正方法 | 復旧時間 |
|---|---|---|---|---|
| Disallow: / によるサイト全体のブロック | Google がどのページもクロールしなくなります | GSC のカバレッジで「クロール済み – インデックス未登録」がサイト全体で急増します | Disallow: / を削除し、必要なルールは残します | 1〜3日で再クロール、1〜2週間で順位が回復します |
| robots.txt でインデックスをブロックしようとする | ページは SERP に表示されるがタイトルがない状態になります | SERP には URL だけが表示され、スニペットもありません | noindex meta タグに切り替えます | 2〜4週間で SERP から消えます |
| ルールのパスを書き間違える | ブロックすべきものがされず、許可すべきものがブロックされます | GSC のクロール統計が異常になります | テストツールで1件ずつ検証します | 修正後すぐに反映されます |
| Sitemap の宣言を忘れる | Google が Sitemap を見つけるのが遅くなります | GSC の Sitemap レポートに「未送信」と表示されます | robots.txt の末尾に Sitemap: ディレクティブを追加 | 次回のクロール時に検出されます |
直感に反する話をします。多くの人は、特定のページを検索結果に出したくないなら Disallow を書けばいいと考えます。これは間違いです。Disallow は Google にコンテンツをクロールさせないだけで、Google はその URL の存在を依然として把握しています。外部リンクや sitemap、過去のクロール履歴から知っているからです。結果として、SERP にはタイトルも説明もスニペットもない裸の URL が並び、ユーザーがクリックしても 403 か空白ページ。体験は最悪で、表示機会を無駄にしています。
正しい方法はこうです。あるページをインデックスさせたくないなら、そのページに noindex meta タグ(<meta name=”robots” content=”noindex”>)を追加し、同時に robots.txt でブロックしないことです。noindex は Google がそのページをクロールできて初めて効果を発揮するからです。Disallow と noindex を両方設定すると、Google はページをクロールできず noindex タグも読めないので、インデックスもできずブロックもできず、どちらも失敗します。
シナリオ例2:B2B サイトの見積もりダウンロードページ(/pricing/quote-request/)を Google にインデックスさせたくないとします。フォームページでキーワード対策が不要だからです。運用チームは Disallow: /pricing/quote-request/ と書きました。すると3か月後、この URL が SERP に現れました。「quote request」で検索すると、タイトルのない裸の URL が表示されたのです。いくつかの業界ディレクトリサイトからこのページに外部リンクが張られていたためです。修正方法:robots.txt の Disallow 行を削除し、ページの head に noindex meta タグを追加します。2週間後、この URL は SERP から消えました。
四、テスト方法と公開フロー
robots.txt は変更すればすぐ反映されます。キャッシュ期間はなく、Google が次に来たときに新しい内容を読みます。つまり書き間違えれば即座に問題が起きます。だから変更のたびに検証が必須です。
| ステップ | アクション | ツール | 合格基準 |
|---|---|---|---|
| 1. ローカルで編集 | robots.txt の内容を変更 | テキストエディタ | 構文が正しく、余分なスペースがない |
| 2. ブラウザでアクセスして検証 | https://ドメイン/robots.txt に直接アクセス | ブラウザ | 200 が返り、内容がプレーンテキスト |
| 3. GSC テストツールで検証 | 対象 URL を入力し、許可されているか確認 | GSCのrobotsテストツール | 重要なページはすべて Allow |
| 4. 公開後の監視 | GSC のクロール統計とカバレッジレポートを確認 | GSC | クロール数が異常に減少していない |
| 5. 改版後の再確認 | 改版のたびに robots.txt を再チェック | GSC + ブラウザ | 新しいパスが誤ってブロックされていない |
チェックリスト:robots.txt を変更したら、少なくとも次の5つの URL をテストしてください。トップページ(/)、製品一覧ページ、製品詳細ページ、ブログ記事ページ、お問い合わせページ。この5つがすべて Allow 状態であることを確認します。どれかが Disallow と表示されたら、ルールの書き間違いです。最も多いミスは、Disallow: / の後にスペースが1つ足りない、または Disallow: /products と書くべきところを Disallow: /products/ と書いてしまい、実際にブロックしたい /products/spec/ サブディレクトリを阻止できていない、というものです。
とサイトリニューアルとドメイン変更の関係:ドメインを変更するとき、旧ドメインの robots.txt でサイト全体を Disallow にしてはいけません。旧ドメインの 301 リダイレクトは Googlebot がクロールして初めて評価を引き継げるからです。旧ドメインの robots.txt に Disallow: / と書くと、Google が旧ページをクロールできず 301 命令を読めないため、評価の引き継ぎが途切れます。正しい方法は、旧ドメインの robots.txt をクロール許可のままにし、admin などの機能的なパスだけをブロックすることです。
FAQ よくある質問
robots.txt と noindex の違いは何ですか?
Disallow: / とはどういう意味ですか?なぜ危険なのですか?
robots.txt が正しく書けているかテストするには?
robots.txt は機密ページを競合他社に見られないように保護できますか?
ドメイン変更後、旧ドメインの robots.txt はどう設定すべきですか?
Allowディレクティブはいつ使う?
最後に
robots.txtはSEOで最も大きな事故を起こしやすい小さなファイルです。数行しかありませんが、スラッシュを1つ間違えるだけでサイト全体が検索結果から消え、復旧には1〜2週間かかります。覚えておくべき核心は2つ。robots.txtはクロールを制御するものでインデックスは制御しないので、インデックスを防ぎたいならnoindexを使うこと。変更後は必ずGSCのテストツールで検証することです。
実行は3ステップ。今週中にブラウザで自分のrobots.txtにアクセスし、本記事の標準設定と照らして Disallow: / や過剰なブロックルールがないか確認します。来週はGSCのrobotsテストツールで重要なページがすべてAllowされているか1つずつ検証し、ファイル末尾にSitemap宣言を追加します。その後はリニューアルやURL構造の変更のたびに、真っ先にrobots.txtを見直し、新しいパスが誤ってブロックされていないか確認します。
覚えておきたい一言。robots.txtはGoogleに出す欠席届であって、ドアの鍵ではありません。書きすぎると自分を締め出してしまいます。隠したいページにはnoindexを使い、Disallowに頼ってはいけません。
