noindexとrobots.txtの因果関係

何かしらの運用上の都合で生成されたページをGoogleのクローラーに読み込ませたくない場合、まずはどうされますか?1ページだけならまだしも、それが何十、何百ページもあったら…今回はそんな時の注意点をふわふわさせていただきます…。

フェンス

ふわふわ

noindexの役割

そもそも、Googleでインデックスさせないようにするためには、head内のmetaタグとしてnoindexを記載します。

サイトのページをほとんどの検索エンジンウェブクローラのインデックス登録対象から除外するには、次のメタタグをページの<head>セクションに挿入します。
<meta name=”robots” content=”noindex”>

ページのインデックス登録をGoogleウェブクローラのみが実行できないようにするには:
<meta name=”googlebot” content=”noindex”>

検索エンジンウェブクローラによってはnoindexディレクティブを別の意味に解釈する可能性があります。このため、他の検索エンジンではページが検索結果に引き続き表示される可能性があります。
引用元)Search Console ヘルプ|Google

 
ちなみに、インデックスはさせないページだけど、そのページからのリンクは辿ってほしいという場合は<meta name=”robots” content=”noindex,follow”>と記述しておくと良いと思います。一応、<meta name=”robots” content=”noindex”>でも同じ扱いにはなるようですが、念のため記述しておくと良いでしょう。逆に、nofollowを設定すると、該当ページからの発リンクはどこに対してもページランクを受け渡さないという解釈になります。従ってリンクすら辿らないでほしい場合は<meta name=”robots” content=”noindex,nofollow”>と記述します。

ふわふわ

robots.txtの役割

robots.txtとは、Googleをはじめとした検索エンジンのクローラーに対してアクセス制限(クロール制限)をかけるためのファイルです。特に何もなければ
User-agent: *
Sitemap: //fuwafuwa.biz/sitemap.xml

を記載する程度だと思います。

また、robots.txtでもnoindexのシグナルを送ることは可能です。例えば、このふわふわビジネスブログで/0000/というディレクトリ以下のページを読み込ませたくない場合は
User-agent: *
Noindex: /0000/
Sitemap: //fuwafuwa.biz/sitemap.xml

と記載することで、前述のhead内各ページのmetaとして入れ込むのと同じ働きをします。いちいち該当ファイルに書き込むようなことをしなくてもrobots.txtでの記載だけで済みますので、数多くのページをnoindexしたい場合は有効です。

※ 2017年現在、Googleはrobots.txt内でnoindexを書き込むことをサポートしなくなっています。いつ機能が無くなるかも分かりませんので、現在はrobots.txtにnoindexのシグナルを送ることは非推奨とお考えください。

ふわふわ

注意点

ここでnoindex時の注意点です。GoogleのSearch Console ヘルプでは、以下の記載がございます。

重要:noindexメタタグを有効にするには、robots.txtファイルでページをブロックしないでください。ページがrobots.txtファイルでブロックされると、クローラはnoindexタグを認識しません。そのため、たとえば他のページからリンクされていると、ページは検索結果に引き続き表示される可能性があります。
引用元)Search Console ヘルプ|Google

 
どういうことでしょうか?
要は「noindexを設定したところで、クローラーがインデックスしないだけで(≒検索結果に出さない)、アクセスはするので(≒読み込みに来る)、だったらrobots.txtにDisallowとして書き込んじゃおう」という考えです。確かに、noindexさせたところで、クローラーはそのページにはアクセスしますので、アクセスするくらいなら、その分他のページを読んでもらった方が効率が良いわけです。前述の/0000/の例で記載すると
User-agent: *
Disallow: /0000/
Sitemap: //fuwafuwa.biz/sitemap.xml

となるわけです。しかし、ここには順序がございます。まずは私の描いたイメージ図をご覧ください。
 
noindex disallow
 
robots.txtはアクセスを制限するものですので、サイト内に入る”扉”のイメージです。一部のページにおいてDisallowとしてその”扉”を閉める(=ブロック)と、もうクローラーは入って来れなくなります。ですので、そのページにはクローラーはアクセスしません。しかしながら、noindexの対象となるページが既にインデックスされているページであったら…noindexのシグナルを送っても、それをクローラーは確認することが出来ませんよね。
結果、Disallowを設定しても、いつまでもインデックスされ続けてしまうわけです。

ふわふわ

しっかりとnoindexを促進してから

インデックスさせたくないページをそもそもクローラーに来させたくない、という逸る気持ちも分かります。しかし、まずはnoindexを充分にシグナルとして送り、インデックスされていないことを確認してからrobots.txtでDisallow設定することをオススメします。noindexを早く促進したい場合は、Search ConsoleでのFetch as Google等を使うと良いと思います。

とにかく順序を間違わず設定するよう心掛けてください。