Googleがrobots.txtを無視する理由とSEOへの悪影響を解説

Googleがrobots.txtを無視する理由とSEOへの悪影響を解説

Googleがrobots.txtを無視する理由とSEOへの悪影響を解説

GoogleのJohn Mueller氏が、robots.txtに関する見落としがちな設定ミスについて回答した。このミスは、SEOやサイトのインデックス目標に悪影響を及ぼす可能性があり、特に検索ボックススパムへの対策を複雑化させる。なぜrobots.txtが正しく機能しないのか、その根本原因と具体的な解決策を解説する。

「無視されるrobots.txt」が生まれる仕組み

「無視されるrobots.txt」が生まれる仕組み

robots.txtは、検索エンジンのクローラーに対して「どのページをクロールしてよいか」を指示するためのファイルだ。しかし、設定の書き方を誤ると、その指示が完全に無視され、意図しないページがGoogleにインデックスされる事態を引き起こす。

誤ったrobots.txt設定(Before)
User-agent: Googlebot
Disallow: /search

User-agent: *
Disallow: /private
Disallow: /admin
※Googlebotは「User-agent: Googlebot」のセクションだけを見るため、/privateや/adminの禁止指示が適用されず、クロールされる可能性がある
正しいrobots.txt設定(After)
User-agent: googlebot
Disallow: /search
Disallow: /private
Disallow: /admin
User-agent: *
Disallow: /
※Googlebot用のセクションにすべての必要なルールを記述するか、共通ルールをコピーすることで、すべての指示が正しく反映される

User-agent別ルールと優先順位の落とし穴

問題の核心は、robots.txtの「より具体的なルールが優先される」という仕様にある。一般的なクローラー向けの User-agent: * セクションと、Googlebot専用の User-agent: googlebot セクションが同じファイル内に存在する場合、Googlebotは自身に直接関係するセクションのみを参照する。

Search Engine Journalの記事によると、あるShopifyサイトでは検索ボックススパム対策として Disallow: /searchUser-agent: * 内に記述していたが、別途 User-agent: Googlebot セクションが存在したため、この禁止指示がGooglebotに無視されていた。結果として、スパムによって生成されたURLがGoogleのインデックスに残り続けることになった。

これはrobots.txtの設計に起因する合理的な動作だ。特定のクローラーにだけピンポイントで指示を出し、それ以外のクローラーには別のルールを適用できる柔軟性を持たせるための仕組みである。しかし、この「柔軟性」が、設定の分断と見落としを生み出す。

設定ミスが引き起こすインデックス問題
スパマー 検索クエリ送信 スパムURL生成 Googlebot robots.txt無視でインデックス
スパマーの攻撃経路
クローラーの動作
発生した問題

robots.txtが制御するのは「クロール」であって「インデックス」ではない

もう一つの重要な前提として、robots.txtはページのクロールを制御するものであり、インデックスを直接制御するものではない。robots.txtでブロックしたページでも、何らかの理由でGoogleがそのURLを知り得た場合、コンテンツをクロールせずにインデックスすることがある。この仕様は、robots.txtだけに依存したインデックス制御が根本的に不完全であることを示している。

robots.txtとnoindexの正しい使い分け

robots.txtとnoindexの正しい使い分け

インデックスそのものを確実に防ぎたい場合、robots.txtよりも meta robots タグによる noindex 指定の方がはるかに効果的だ。robots.txtはドアの前に立つ警備員のようなもので、部屋の中のものを「知らない」ままでいられるが、部屋の存在自体を消し去ることはできない。noindex は、その部屋に「公開禁止」の札を貼るようなもので、検索エンジンに直接「これを検索結果に表示しないでほしい」と伝える。

誤った対策 robots.txtによるブロック
User-agent: *
Disallow: /search
robots.txtだけでは、クロールはブロックできてもインデックスは防げない。外部リンクなどからURLが発見されると、検索結果に表示されるリスクがある。
正しい対策 noindexタグの設置
<meta name=”robots” content=”noindex”>
このタグがページの<head>内にあれば、Googleはそのページをクロールしても検索結果から除外する。より確実なインデックス制御が可能。

noindexを確実に適用するための注意点

noindex を適用する際、robots.txtでそのページをクロール禁止にしてしまうと、Googlebotはそもそもそのページを読みに行けず、noindex タグを発見できない。結果として、いつまでもインデックスから削除されないという、本末転倒な事態を招く。クロールを許可した上で、noindex を指示することではじめて、意図したインデックス制御が機能する。

ShopifyとWordPressにおける具体的な対策

ShopifyとWordPressにおける具体的な対策

検索ボックススパムは、どのようなCMSでも発生しうる問題だが、幸いShopifyとWordPressの両方には、比較的簡単に実装できる緩和策が用意されている。

Shopifyでの検索ページnoindex設定

Shopifyでは、テーマの theme.liquid ファイルを編集することで、すべての検索結果ページに自動で noindex タグを追加できる。これにより、スパムクエリによって生成された無意味なページが検索結果に表示されることを防ぐ。

{% if template contains 'search' %}
  <meta name="robots" content="noindex">
{% endif %}

このコードをテーマの <head> セクションに追記するだけで、すべての検索ページへのnoindex適用が完了する。robots.txtによる制御と異なり、検索結果ページのURLを確実にインデックスから除外できるため、より根本的なスパム対策となる。

WordPressでの検索スパム対策

WordPress環境では、主要なSEOプラグインを導入するだけで検索結果ページへの noindex がデフォルトで有効になる。Yoast SEO、Rank Math、All In One SEO Packといったプラグインは、インストールしたその日から検索スパムに対する基本的な防御壁として機能する。

さらに、Diviをはじめとする一部のテーマやページビルダーは、スパムワードを含む検索クエリに対して、結果を表示する代わりに「該当する結果がありませんでした」というメッセージを返す仕組みを備えている。これにより、スパムURLそのものが生成されにくくなるという副次的な効果も期待できる。

robots.txtの正しい知識がサイトを守る

robots.txtの正しい知識がサイトを守る

robots.txtは強力なツールだが、その仕様を正しく理解していないと、かえってサイトの健全性を損なう原因になりうる。特に、User-agent別のルールの優先順位や、クロール制御とインデックス制御の違いといった基礎知識は、サイト運営者にとって必須のリテラシーと言える。

この記事のポイント

  • robots.txtでUser-agent: Googlebotの専用セクションがあると、一般的なUser-agent: *のルールはGooglebotに無視される。
  • robots.txtはクロールの制御であり、確実なインデックス除外にはmeta robotsタグのnoindex指定が必要。
  • 検索ボックススパム対策には、robots.txtよりnoindexの方が根本的な解決策となる。
  • ShopifyやWordPress(SEOプラグイン利用)では、テンプレートや設定を少し修正するだけで検索スパムを効果的に緩和できる。
海田 洋祐

・ 複数業界における17年間のデジタルビジネス開発経験 ・ ウェブサイト開発のためのHTML、PHP、CSS、JavaScript等の実用的知識 ・ 15ヶ国語対応の多言語SaaSの開発経験 ・ 17年間にも及ぶ、Eコマース長期運営経験 ・ 幅広い業界でのSEO最適化の豊富な経験

メッセージを残す