サイト運営者がクローラーとインデクサを制御する指示を出すことで、検索結果に表示されたとしても検索者に対してそれほど価値を提供しないページやファイルについて、あらかじめ検索結果に表示されることがないようにしておくことができます。これは検索者の体験を阻害しないようにするとともに、検索エンジンから低評価を受けないようにするための対策です。
目次
クローラーとインデクサを制御する理由
クローラーの制御とは、特定のURLをクローラーからブロックしたり、またはクロールはさせても検索結果に表示させないようにするなど、サイト内のコンテンツを検索エンジンがどのように取り扱うべきかの指示を明示的に行うことをいいます。
現在のクローラーは非常に高いクロール能力を持っており、検索対象としてインデックスするかどうかを別にすれば、公開されているほとんどすべてのURLをクロールすることができます。このことがSEOにとって不利に働くケースがあり、そのための対処としてクローラーの制御には重要な意味を持っています。
価値の低いページを除外する
ほとんどのサイトには多かれ少なかれ、検索者に対して価値をそれほど提供しないページが存在します。こうしたページに対してクローラーの制御を行っていない場合、検索エンジンは「サイト内に内容の薄いページが存在する」または「コンテンツに重複がある」として、サイトの評価を低下させる可能性があります。
- 完成前のスタブ(プレースホルダ)ページ
- テンプレート部を除くと広告しかないページ
- テンプレート部を除くと他サイトからの引用しかないページ
- 市町村別などのページで内容が空かほとんどないページ
上記のようなページは、検索結果に表示されることはまずありませんし、仮に表示されたとしても検索者に価値を提供しません。さらに、その存在自体がサイトの評価を下げる原因にもなります。クローラーからブロックしておく必要のあるページです。
またブログなどのCMSを利用している場合に自動生成される次のようなページについては、サイト全体のクロールやリンクポピュラリティの再配分という意味では必要でも、そのページ自体が検索結果に表示される必要はないかもしれません。
- 日付アーカイブページ
- タギングによる分類をしている場合のタグページ
上記のようなページについては、クロールはさせるが検索対象には含めない、といった対処をすることによって、検索者の体験をよりよくすことができるかもしれません。また、重複コンテンツや内容の薄いページといったマイナス評価を少しでも減らすことにつながる可能性もあります。
制御する方法の種類と使い分け
クローラーとインデクサの制御に利用できる方法には次の3種類があり、それぞれ利用できる機能が異なるため、目的に合わせて使い分けるとよいでしょう。
- robots.txt による制御
- ディレクトリやファイル、またはファイルの種類などに対して、クロールそのものを拒否したい場合に使用します
- Microformats による制御
- Microformats(具体的には a要素 rel=”nofollow”)では、リンク先へのリンクポピュラリティ評価の受け渡しを個別のリンクごとに拒否することが可能です。主に「このリンク先にはリンクポピュラリティ評価を継承させない」または「リンク先は信頼できない」という場合に使用します
- meta要素Robots による制御
- meta要素Robots による制御では、単なるクロールの拒否だけでなくより細かな指定が可能です。この特性から主に「クロールは許可するが検索結果には表示しない」という場合に使用します
- X-Robots-Tag による制御
- X-Robots-Tag による制御では、単なるクロールの拒否だけでなくより細かな指定が可能です。この特性から主に「クロールは許可するが検索結果には表示しない」という場合に使用します
以下では、それぞれの詳しい使い方について説明していきます。
robots.txt による制御
主要検索エンジンのほとんどはロボット排除プロトコル(REP:Robots Exclusion Protocol)に対応しており、robots.txt によるクローラーの制御が可能です。robots.txt の主な役割は、クロールを拒否するディレクトリやファイルを指定し、検索エンジンに伝えることです。
サイトのルートディレクトリに「robots.txt」という名前のテキストファイルを設置し、クロールされたくないディレクトリやファイルを指定しておくことで、クローラーの巡回を制限することができます。Googleなど一部の検索エンジンでは、robots.txtで正規表現を使った細かな制御も可能です。
User-agent: *
Disallow: /cgi-bin/
User-Agent: Googlebot
Disallow: /tmp/
User-Agent: BaiduImagespider
Disallow: *.png$
上は、すべてのクローラーの cgi-bin ディレクトリに対するクロールを拒否し、加えて Googlebot には tmp ディレクトリに対する巡回を拒否し、BaiduImagespiderにはPNGファイルに対する巡回を拒否する場合の記述例です。上記のように robots.txt における指定は、クローラーのユーザーエージェント名とそのクローラーに対する指示をセットにして記述します1。
なお、robots.txtでクロールを拒否しているページでも、他のページからのリンクを受けている場合には、URLが検索結果に表示されることがあります。こうしたことも防ぎたいのであれば、meta要素Robots および X-Robots-Tag を利用し、robots.txt を使用しない、という方法もあります。
しかしそもそも「存在が知られたくないファイルやディレクトリ」はウェブ上の公開エリアにアップロードすべきではありません。ここで話題にしているのはあくまでも「人が見るのは構わないがクローラーやインデクサの動作は制御したい」という場合の話であることに注意してください。
Microformats による制御
HTML文書からa要素と href属性を使ってリンクする際に、a要素に rel属性を利用した rel=”nofollow” という Microformats を加えることで、リンク先にリンクポピュラリティの評価(リンクジュース)を継承しないように指示することができます。このMicroformats が意味するところは次のようなものです。
- リンク先にリンクポピュラリティの評価を継承しない
- リンク先のウェブページのクロールおよびインデックスを推奨しない
- リンク先は信頼できるページではない
自分のサイトからスパムサイトに言及する際や、トラックバックスパム、コメントスパムを防ぎたい場合に使用します。記述は次のようになります。
<a href="https://www.example.com/" rel="nofollow">スパムサイト</a>
あくまでもこれはリンク元からリンク先へとリンクポピュラリティの評価が継承されることを防ぐ、またはリンク元とリンク先の関係を否定するものであって、リンク先のクロールやインデックスに影響を与えるものではありません。
このため、リンク先のページやファイルも自分が管理しているものであり、それらのクロールやインデックスを制御したいのであれば、別の方法(robots.txt や meta要素Robots、X-Robots-Tag)で制御する必要があります。
また、以前はこれを自分が管理するサイト内におけるリンクポピュラリティの再配分を操作する意図で使用すること(PageRank Sculpting と呼ばれていました)が一部で見られましたが、これは現在では意味がありません(おそらくもともと意味がなかったはず)。
meta要素Robots による制御
先述の robots.txt による制御は基本的にはクローラーの拒否しかできないのに対して、meta要素Robots および X-Robots-Tag を使用した制御では「クロールは許可するが検索結果には表示しない」という設定が可能になります。これを利用することで、クローラーからページを隠すことなく、しかし検索結果に表示させない、という制御ができます。
最終的な出力が(X)HTML文書となるURLであれば、それが静的なものであれ動的なものであれ、meta要素Robotsによる指定が適しています。ブログにおける日付アーカイブページやタグページなどのように、検索結果に表示されてもあまり意味がないというようなURLについて、この meta要素Robots で制御するのがよいでしょう。
具体的にはhead要素内に次のように記述します。これは「検索結果には表示させず、リンクは辿らせる」という意味の指定です。この他の指定できる項目については後述します。
<meta name="robots" content="noindex,follow" />
X-Robots-Tag による制御
X-Robots-Tag はサーバ側の設定でHTTPレスポンスヘッダの中にクローラーやインデクサへの指示を含める方法です。HTMLだけでなくどんなファイルでも対象にすることができるため、PDFやSWF(Flashファイル)、PPT(パワーポイント)のように、(X)HTML文書でない各種のファイル形式において有用です。
X-Robots-Tag は下記のように .htaccess や httpd.conf でディレクティブを設定して指定します。これは Flashファイル、PDFファイル、PPTファイル、DOCファイルについて「検索結果には表示させるが、リンクは辿らせない」という指定の例です。
<FilesMatch "\.(swf|pdf|ppt|doc)$">
Header set X-Robots-Tag "index,nofollow"
</FilesMatch>
この nofollow の指定はリンク先に評価を継承しないことを指示するものですので、スパムサイトなどについてリンク付きで言及するファイル(HTMLではないファイル)をWeb上で公開するときに、このような指定が有用であるかもしれません。
上記のような X-Robots-Tag が指定されたファイルにアクセスするとき、ロボットを含むユーザーエージェントに対してサーバから返されるHTTPレスポンスヘッダには、指定された内容に沿って次のような行が追加されます。
X-Robots-Tag: noindex,nofollow
HTTPレスポンスヘッダの内容は、ブラウザの開発者ツールで確認できます。以下に別の例を示します。
X-Robots-Tag: noindex,nofollow,noarchive,nosnippet
上の例は、このファイルのインデックスを許可せず、リンクを辿ることを許可せず、キャッシュすることを許可せず、スニペットを表示することを許可しない、という指示です。このように、ディレクティブには複数の種類があり、それらは組み合わせて使うこともできます。
meta要素Robots および X-Robots-Tag で利用できるディレクティブ
利用できるディレクティブの種類や意味は、meta要素Robots および X-Robots-Tag で共通です。主なものを以下に示します2。
- noindex
- 検索結果に表示させない
- nofollow
- リンクを辿らせない
- noarchive
- 検索結果にキャッシュページへのリンクを表示させない
- nosnippet
- 検索結果に説明文を表示させない
- noodp
- 検査結果のタイトルや説明文にODPの情報を使用させない
- noydir
- 検査結果のタイトルや説明文にYahoo!の情報を使用させない
まとめ
クローラーやインデクサを制御する方法にはいくつかの種類があり、それぞれ利用できる機能に違いがあるため、目的に応じて使い分けることができます。その使い分けは次のようなものです。自分でSEOを実施する際の参考にしてください。
- robots.txt
- ディレクトリやファイルのクロールおよびインデックスを拒否する場合に使用する(SEO観点からは多用しないことが望まれる)
- meta要素Robots
- HTMLで出力されるページで、そのページは検索結果に表示させずに、リンクの評価は継承させる場合に使用する
例:<meta name="robots" content="noindex,follow" />
- X-Robots-Tag
- HTML以外の形式でリンク情報を含むファイルについて、そのファイルは検索結果に表示させずに、リンクの評価は継承させる場合に使用する(例1)。または、そのファイルは検索結果に表示させるが、そのファイルからのリンクの評価は継承させない場合に使用する(例2)。
例1: X-Robots-Tag: noindex,follow
例2: X-Robots-Tag: index,nofollow Microformats rel="nofollow"
- ページ内の指定のリンクについて、リンクポピュラリティの評価をリンク先に継承させない場合に使用する
例:<a href="https://www.example.com/" rel="nofollow">スパム</a>