目次を見る06

robots.txtでは隠せない──テスト環境のインデックス対策

Wemiro編集部読了目安 11
テクニカルSEOインデックス管理開発環境

社名で検索したら、staging. から始まるURLが並んでいた。robots.txt には Disallow を書いてあるのに。

原因はたいてい、道具の選び間違いです。Google の robots.txt ドキュメントには、robots.txt はサイト上のURLへの検索クローラーのアクセスを管理するもので、主にサーバーの過負荷を避けるためのものだと書かれています。そして、そこにこう続きます。「Google からページを隠すためのものではない。noindex かパスワードを使うこと」。

隠す道具ではないものを、隠すために使っていた。それだけの話です。

Disallow は「来ないでくれ」であって「載せないでくれ」ではない

robots.txt に書けるのは、クローラーの巡回(クロール)についての指示です。検索結果への登録(インデックス)そのものを止める指示ではありません。

同じドキュメントは、画像・動画・音声ファイルについては robots.txt でGoogle検索の結果に出ないようにできる、とも書いています。ただしその直後に但し書きが付きます。他のページや利用者が、そのファイルにリンクすることまでは防げません。robots.txt が触れているのは自分のサーバーへのアクセスであって、外の世界ではない、ということです。

だからテスト環境を守るときは、まず問いを立て直します。「クローラーに来てほしくない」のか、「検索結果に出したくない」のか。後者なら robots.txt では届きません。

noindex を効かせたいなら、先にクロールを許可する

ここが、多くのテスト環境がはまる矛盾です。

noindex は、クローラーが読み取って初めて効く設定です。公式ドキュメントは注意書きとしてはっきり書いています。noindex ルールが有効であるためには、そのページやリソースが robots.txt でブロックされていてはいけません。同じページには、noindex を入れたのに消えない理由として、robots.txt がそのURLをGoogleのクローラーからブロックしているためタグが見えない、というケースも挙がっています。

robots.txt で塞いだ上に noindex も入れる。二重の守りのつもりが、実際には塞いだ側が noindex を無効化しています。

読み取ってもらえた場合の効き目は強力です。Googlebot がそのページをクロールしてタグやヘッダーを取り出すと、他のサイトからリンクされているかどうかに関係なく、Google はそのページを検索結果から完全に削除する、と書かれています。

書き方は2通りあります。HTMLの <head><meta name="robots" content="noindex"> を置くか、HTTPレスポンスヘッダーで X-Robots-Tag: noindex を返すかです。Googleのクローラーだけを対象にしたいなら <meta name="googlebot" content="noindex"> という書き方も示されています。ヘッダーのほうは、PDF・動画ファイル・画像ファイルのようなHTML以外のリソースにも使えると明記されています。

なお公式は、noindex ルールの解釈は検索エンジンによって異なる場合がある、とも添えています。Google以外まで一律に消える前提で設計しないほうが安全です。

公式が挙げるブロック方法と、公式が付けた但し書き

「検索エンジンでの表示を管理する」のドキュメントには、コンテンツをブロックする方法として、サイトから削除する・ファイルをパスワードで保護する・noindex ルールを使う・robots.txt でクロールを拒否する・特定のGoogleプロダクトからオプトアウトする、が並んでいます。

ここに順位は付いていません。ただし但し書きが2つあります。削除ツールのヘルプでは、恒久的な手当てとして「パスワードを要求する」ことを挙げた直後に noindex メタタグを示し、こちらは他の方法より安全性が低い、と添えています。robots.txt については、ブロックの仕組みとして使わないこと、と書かれています。

以下の並びは、この2つの但し書きを手がかりにした検討順です。

方法公式ドキュメントでの位置づけテスト環境での使いどころ
サイトから削除するブロック方法の一つとして明記役目を終えた検証環境。残す理由がないなら消すのが一番速い
パスワードで保護する恒久的な手当てとして「パスワードを要求する」形で挙がる本命。関係者だけが見られればよいテスト環境の性質と噛み合う
noindex ルール有効。ただし「他の方法より安全性が低い」認証を掛けられない事情があるときの次善。robots.txt の許可とセット
robots.txt でクロール拒否「ブロックの仕組みとして使わないこと」隠す目的では使わない。noindex を選ぶなら、むしろ許可側に回す
特定のプロダクトからオプトアウトブロック方法の一つとして明記表示先を絞る話。テスト環境を隠す用途とは別

二つめのパスワード保護が、冒頭の staging. が並んでしまったケースの答えになります。関係者以外が本文を取得できない状態にしておくのが、いちばん手数の少ない守りです。三つめの noindex は、認証を掛けると動かない外部連携がある、といった事情の逃げ道。そして四つめの robots.txt は、隠す目的の候補から外してかまいません。

すでに検索結果に出てしまったURLの片づけ方

出てしまったあとは、時間稼ぎと恒久対策を並行させます。

  1. ステージングのホストが自分のSearch Consoleプロパティに入っているか確認する。 削除ツールのヘルプは、対象URLが自分が所有するSearch Consoleプロパティ内にあることを条件として最初に挙げています。本番ドメインだけ登録していて、サブドメインは未登録、という状態はよくあります。ここが欠けていると次に進めません。
  2. 削除ツールを開き、「一時的な削除」タブから新しいリクエストを作る。 手順もその順で書かれています。あくまで一時的にブロックするための機能なので、これ単体で終わりにはできません。
  3. 時間稼ぎをしている間に、恒久的な手当てを入れる。 パスワード保護が第一候補、掛けられないなら noindex です。
  4. noindex を選んだなら、robots.txt の Disallow を外す。 前の節のとおり、ブロックされたままではタグが読まれません。守りを足すつもりで足したものが、ここでは邪魔になります。
  5. 送るURLはホスト単位で厳密に扱う。 ヘルプには、m.amp. のようにサブドメインが違えば一致しない、と例つきで書かれています。http://m.example.com/mypage は一致しない、という具体例です。ステージングが複数ホストに分かれているなら、それぞれ送ります。
  6. 説明文だけ消したいときは別の選択肢がある。 削除ツールには、検索結果のページ説明(スニペット)を消す機能もあります。次にインデックスされ直すまで説明文が消え、その後は新しい内容から生成される、という説明です。

順番についての注意も、ヘルプに書かれています。コンテンツを恒久的に削除する手順の中で、事前にページをブロックしていた場合は、いったん解除してから再びブロックし直すよう案内されています。塞いだまま消しても片づかないことがある、ということです。

自分の環境で30分で確かめる

設定したつもりで終わっているケースが一番多いので、外から実際に取りに行って確かめます。staging.example.com を例に、順番に手を動かします。

  1. 社内ネットワークの外から取得を試す。 スマートフォンのテザリングなどでIPを変え、curl -i https://staging.example.com/ を実行します。オフィスのIPだけ認証を素通りさせる設定になっていると、社内からの確認はいつまでも正しく見えません。
  2. 本文が返ってきたかどうかだけを見る。 認証を掛けたつもりのホストからHTMLの本文が丸ごと返ってくるなら、そのホストには掛かっていません。ここで止めて、サーバー設定に戻ります。
  3. 認証を掛けられない事情があるなら、noindex の現物を確認する。 curl -sI https://staging.example.com/ | grep -i x-robots-tag でヘッダーを見て、あわせてHTMLの <head> に meta タグが実際に出力されているかを、ページのソースで確かめます。テンプレートの条件分岐で本番だけ出力される、といったずれが見つかることがあります。
  4. 同じURLが robots.txt で拒否されていないか照合する。 https://staging.example.com/robots.txt を開き、noindex を効かせたいパスが Disallow に入っていたら外します。
  5. Search Consoleのプロパティ登録状況を見ておく。 万一インデックスされたときに削除ツールを使えるかどうかが、ここで決まります。登録は事故が起きる前に済ませておくほうが速いです。
  6. 確認した日付と結果を残す。 環境は作り直されます。次にステージングを立て直した人が同じ確認をできるよう、手順ごと置いておきます。

ひととおり通したら、次の表に自分のケースを当てはめてください。

確認したこと結果次にやること
外部から本文が取得できるか取得できない(認証あり)完了。robots.txt を隠す目的で使っているなら外してよい
外部から本文が取得できるか取得できる認証を掛ける。掛けられない事情があるなら noindex へ
noindex を選んだ同じURLを robots.txt で Disallow しているDisallow を外す。読まれない noindex は効かない
noindex を選んだヘッダーにも meta タグにも出ていないテンプレートの環境判定を疑う。本番だけ出力されていないか
すでに検索結果に出ているSearch Consoleプロパティがある一時的な削除で時間を稼ぎ、その間に認証か noindex を入れる
すでに検索結果に出ているプロパティがないまずプロパティを登録する。削除ツールの前提条件

つまずきやすいところ

「noindex を入れたのに消えない」という相談の多くは、四つめの行に落ちます。robots.txt がクローラーからURLをブロックしていてタグが見えない、というケースが公式にも理由として挙げられています。守りを足したつもりで、守りを壊しているわけです。

もうひとつは、テスト環境を丸ごと Disallow: / にしておけば安心だ、という思い込み。robots.txt は「Googleからページを隠すためのものではない」と公式が名指しで否定しています。安心の根拠がドキュメントのどこにも無い状態で運用している、ということになります。

画像や動画をテスト環境に置いている場合も、扱いは同じ線で考えます。robots.txt でメディアファイルが検索結果に出ないようにはできますが、他のページや人がそのファイルにリンクすることまでは防げない、と書かれています。防ぎたいのが露出そのものなら、やはり認証です。

noindex が効かない症状そのものの切り分けは noindexを設定したのに検索結果から消えない原因 に手順があります。同じ robots.txt でAI向けクローラーの扱いも決めるなら、Google-Extendedの設定と検索への影響 が近い話です。

出典

  1. Google 検索セントラル - robots.txt の概要
  2. Google 検索セントラル - noindex を使用して検索インデックス登録をブロックする
  3. Search Console ヘルプ - Google 検索結果からページを削除する
  4. Google 検索セントラル - 検索エンジンでの表示を管理する

NEXT STEP

クライアントへの説明に使える実際の画面を見てみませんか

ご自身の目で、GA4・Search Consoleのデータがどう整理されるかを確認いただけます。

無料デモを見てみる