robots.txtとnoindexの違いはクロールを止めるか検索結果から外すか
公開日: 執筆:佐藤
robots.txtとnoindexは、どちらも検索エンジンに関係する設定ですが、止めるものが違います。robots.txtのDisallowは、指定したURLをGooglebotがクロールしないようにする設定です。noindexは、取得したページを検索結果へ掲載しないようにする指示です。
検索結果から外したい公開ページには、Googlebotがページを取得できる状態でnoindexを使います。クロールを減らしたい場所にはrobots.txtを使います。社内資料や個人情報など、第三者に見せてはいけない内容は、どちらにも任せず、認証やパスワードでアクセスを制限します。
まず「クロールを止めたい」「検索結果から外したい」「閲覧そのものを止めたい」のどれかを決めてください。目的が決まれば、選ぶ設定も決まります。
robots.txtはGooglebotがページを取得する前にクロールを止める
robots.txtは、サイトのルートへ置くテキストファイルです。example.comなら、ファイルの場所はhttp://example.com/robots.txtです。ファイル名や設置場所が違えば、検索エンジンはサイト全体の指示として扱えません。
たとえば、/work/以下をGooglebotにクロールさせない設定は、次の形になります。
User-agent: Googlebot
Disallow: /work/
Googleのrobots.txtに関する説明は、Disallowを指定したページをGooglebotが取得しないと説明しています。サーバーへの不要なクロールを避けたい場所や、検索エンジンに取得させる必要がないファイル群を分けるための設定です。
ただし、robots.txtは「検索結果から必ず消す」という指示ではありません。Googleが別のサイトにあるリンクからURLを見つけた場合、ページを取得していなくても、URLやリンクの文字が検索結果へ表示されることがあります。検索結果への掲載を止める目的だけでDisallowを選ぶと、目的と手段がずれます。
noindexは取得されたページを検索結果から外す
HTMLページを検索結果へ掲載させたくない場合は、head要素の中へrobots metaタグを記述します。
<meta name="robots" content="noindex" />
Googleのrobots metaタグに関する説明によれば、Googlebotはページを取得し、noindexを読んだうえで、そのページをインデックスへ含めません。すでに検索結果へ出ているページへ設定した場合も、Googlebotが再び取得して指示を読む必要があります。設定した瞬間に検索結果が変わるとは限りません。
noindexは、ページを開けなくする設定ではありません。URLを知っている人はページを閲覧できます。また、nofollowとも役割が違います。noindexはページの掲載、nofollowはページ上のリンクの扱いに関する指示です。検索結果から外すだけなら、必要のないnofollowまで加えません。
Disallowとnoindexを重ねるとnoindexを読ませられない
検索結果から確実に外したいと考え、同じページへDisallowとnoindexを重ねたくなるかもしれません。しかし、この組み合わせでは、robots.txtが先にGooglebotのクロールを止めます。Googlebotはページを取得できないため、HTMLに書いたnoindexを読めません。
たとえば、検索結果から外したい公開済みの作業案内が/work/guide.htmlにあるとします。robots.txtで/work/をDisallowし、同じページへnoindexを記述しても、noindexを読ませる条件が成立しません。これは設定の関係を示す仮例であり、実在するサイトの設定ではありません。
このページを一般の閲覧者には公開したまま、Googleの検索結果から外したいなら、Googlebotによる取得を許可し、ページ側のnoindexを読める状態にします。先に目的を一つへ絞り、互いの働きを打ち消す設定を避けます。
PDFなどのHTML以外にはX-Robots-Tagを使う
PDFにはHTMLのhead要素がないため、metaタグを書けません。HTML以外のファイルを検索結果へ掲載させたくない場合は、HTTP応答ヘッダーへX-Robots-Tagを設定できます。
X-Robots-Tag: noindex
Googleが説明するX-Robots-Tagは、PDF、動画など、HTML以外のファイルにもrobots metaタグと同じ指示を適用する方法です。設定場所はウェブサーバーの構成によって異なります。管理画面やファイル名だけで設定済みと判断せず、実際のHTTP応答ヘッダーを確認します。
PDFをrobots.txtで取得禁止にすると、GooglebotはX-Robots-Tagも確認できません。ここでも、検索結果から外すことが目的なら、ヘッダーを読める状態が必要です。
見せてはいけない情報は認証で守る
robots.txtは、従う検索ロボットへの依頼です。URLへのアクセスを拒否する機能ではなく、すべてのロボットが指示へ従う保証もありません。さらに、ファイルを開けば、クロールを止めたい場所を誰でも読めます。
Googleの公式資料も、機密情報はrobots.txtに頼らず、パスワードで保護するよう案内しています。顧客情報、社内資料、公開前の原稿などを守る目的なら、認証されていない利用者へサーバーが内容を返さない状態を作ります。
noindexもアクセス制限にはなりません。検索結果へ載らなくても、URLを知る人が開けるなら、非公開とはいえません。「見つけにくくすること」と「見せないこと」を分けます。
一つのURLで目的と応答を確認してから範囲を広げる
サイト全体の設定を一度に変える前に、対象URLを一つ選びます。クロールを止めるならルートのrobots.txtを開き、対象パスとUser-agentを確認します。検索結果から外すなら、ページのHTMLまたはHTTP応答ヘッダーを調べ、GooglebotがそのURLを取得できるか確認します。閲覧を止めるなら、ログアウトした状態で内容が返らないことを確かめます。
7月に公開されたGoogleウェブマスターツールのIndex Statusでは、インデックスに登録されたページ、クロールしたページ、robots.txtでブロックされたページなどの推移を確認できます。サイト全体へ誤ってnoindexを設定すると、登録ページ数が急に減ることもあります。変更したURLと日付を記録し、ページ単体の設定とサイト全体の変化を分けて確認します。
最初に確認するのは、検索結果ではなく、対象URLへ現在出している指示です。一つのURLについて、クロール、検索結果への掲載、閲覧制限のうち、何を止めるのかを書き出してください。その目的に必要な設定だけを選び、変更後のHTMLまたはHTTP応答を確認します。
関連記事

