robots.txtファイルとは、検索エンジンのクローラー(Googlebot等のスパイダー)に対してサイト巡回の制御を行うファイルです。

robots.txtファイルを記述することにより比較的簡単にクローラーの巡回を許可するページや巡回されたくないページを指示することができます。

サイトの全体や一部にロボット避けを施したり、XMLサイトマップの場所を記述する時に利用します。

今回はrobots.txtファイルの使い方を解説します。

robots.txtファイル

robots.txtファイルとは

クローラーとはウェブサイトの情報を収集するために自動で巡回しているロボットです。

クローラーは検索エンジンのものばかりとは限りませんが、主に検索エンジンが走らせているボットのことを指します。

クローラーはサイトにアクセスする際、robots.txtファイルが存在するならば、そこに記述されている制御を巡回するページを決定します。

robots.txtファイルでURL、ディレクトリ等へのクローラーのアクセスの制御を行う時に利用します。

どのページへもアクセスしないように記述することもできますし、「このディレクトはアクセスしちゃダメだけど、こっちはOK」といった制御も可能です。

しかし、robots.txtファイルが設置されていても、クローラーがそれに従うかどうかはわかりません。あくまでも紳士協定のようなものです。

GoogleやBing等の一般的な検索エンジンのクローラーはrobots.txtファイルに記述された指示を守りますが、お行儀の悪いクローラーはrobots.txtファイルを無視してクローリングすることもあるかもしれません。

なお、特にロボット避けの制御を必要としない場合はrobots.txtファイルを設置する必要はありません。

また、robots.txtファイルにXMLサイトマップをアップロードしている場所を記述しておくことにより、通常のクローリングでは検出が難しいURLの発見に役立ち、サイトに存在する全てのURLを検索エンジンに伝える事ができます。

robots.txtファイルの設置方法

robots.txtファイルはドメインのルートディレクトリに設置する必要があります。

robots.txtという名前のテキストファイルを作成するだけです。

OKな設置例:http://example.jp/robots.txt
ダメな設置例:http://example.jp/hoge/robots.txt

つまり、サブディレクトリ型のレンタルウェブスペースに設置されているサイトでrobots.txtファイルを使うことはできません。

その場合、インデックスの制御はrobots metaタグを使用するしかありません。
参考記事:robots metaタグ(noindex,nofollow,noarchive)の使い方

なお、robots.txtファイルはクローラーが巡回をして取得して反映させるまでにタイムラグがありますので、robots.txtファイルに新たに記述を行なってもすぐに反映されるわけではありません。

ブロックしたいコンテンツが前もってわかっている場合は、あらかじめrobots.txtファイルでクローラーにブロックしたいURLを伝えておいたほうが無難です。

robots.txtファイルの記述方法

  • Sitemap:XMLサイトマップの設置場所の指定
  • 大文字と小文字の間違いに注意
  • User-agent:指示を与えるクローラー
  • Disallow:拒否
  • Allow:許可
  • ワイルドカードとURL末尾のパターン一致

Sitemap:XMLサイトマップの設置場所の指定

XMLサイトマップが設置されているURLを指定します。

クローラーは取得したXMLサイトマップに記述されているURLを、クロールするURLのリストの中に加えます。

Sitemap:記述例

Sitemap: http://example.jp/sitemap.xml

User-agent:指示を与えるクローラー

User-agent:で指示を与えるロボットを指名します。

  • User-agent: *(全てのクローラー)
  • User-agent: クローラー名(クローラーを指定)

User-agent: *と記述すると、全てのクローラーに対して今から命令を行いますという宣言になります。

User-agent: Googlebotと記述すると、Googleのクローラーに対して命令を行うことができます。

また、User-agent: Googlebot-Imageと記述すると、Google画像検索用のクローラーに対しての指示が行えます。

大文字と小文字の間違いに注意

大文字と小文字の違いを認識します。

User-agent: *
Disallow: /test/

上記の例ですと、http://example.jp/test/ へのアクセスを禁じます。

User-agent: *
Disallow: /TEST/

こちらの場合、http://example.jp/TEST/へのアクセスを禁じます。

大文字のURLを使っている方はほとんどいらっしゃらないと思いますので、小文字を使うようにしましょう。

Disallow:拒否

クローラーを拒否します。

  • Disallow: /(/(スラッシュ)を入力するだけだとサイト全体を拒否)
  • Disallow: /paid-inks.html(paid-links.htmlを拒否)
  • Disallow: /links/(linksディレクトリと中身のファイル及びそれ以降の階層全てを拒否)

Disallow:記述例

User-agent: *
Disallow: /test/

上記の記述ですと、全てのクローラーは/test/ディレクトリとそれ以降の階層にアクセスしないように指示します。

Allow:許可

Allow:は許可という意味になります。

Allow:はDisallow:よりも優先されます。

通常、Disallow:で拒否したいディレクトリ等を指定するのですが、一部許可したいものを指定するのに使います。

Allow:記述例

User-agent: *
Disallow: /item/
Allow: /item/best-collection/

http://example.com/item/best-collection/をクロールさせたいが、http://example.com/item/やhttp://example.net/item/worst-collection/等はクロールを禁じたい場合の例です。

上記の記述を行うことにより、/item/ディレクトの中身とそれ以降のディレクトリへのクローラーのアクセスを禁じていますが、/best-collection/へのアクセスは許可できます。

ワイルドカードとURL末尾のパターン一致

User-agent: Googlebot
Disallow: /*.pdf$

*はワイルドカード指定です。hoge.pdfであっても、test.pdfであってもクローリングを禁じることができます。

$は末尾のパターンを一致させる記述です。.pdfで終わるURLへのアクセスを禁じます。

noindex robots metaタグとの違い

robots.txtファイルで制御しても検索結果に表示されることがある

robots.txtファイルはクロールを制御するタグです。クローラーはDisallow: で指定されたURLにアクセスすることはできません。

アクセス出来ないわけですから、インデックスすることもできません。

インデックスされないわけですから、検索結果に出ることもない… と思ったら、少し違います。

インデックスはされないけれども、検索結果に表示されることもあるんです。

robots.txtファイルでブロックしたのに検索結果に表示される例。この結果の説明は、このサイトの robots.txt により表示されません - 詳細と表示されている。

この結果の説明は、このサイトの robots.txt により表示されません – 詳細

上記のような表示になり、SERPsに出現しています。

robots.txtファイルで制御した場合、クローラーは指定されたURLにアクセスできませんし、当然、インデックスもできませんが、検索エンジンはそこになんらかのファイルが存在していることは知っていますので、検索者にとって必要だと感じればSERPsに表示させます。

絶対に検索結果に表示させたくないページを指定するには、robots.txtファイルでブロックするのではなく、noindex robots metaタグを使うか、X-Robots-Tagを使います。

なお、noindex robots metaタグを記述する場合、noindex robots metaタグとrobots.txtファイルを併用してはいけません。

クローラーはrobots.txtファイルの内容を優先します。

  1. クローラーがアクセス
  2. robots.txtファイルの内容を参照してクロールリストを作る
  3. Disallow: で指定されており、さらにnoindex robots metaタグが記述されているページが存在
  4. クローラーはrobots.txtファイルの内容を優先するためnoindex robots metaタグが記述されているページにアクセスできない
  5. つまりnoindex robots metaタグを読み込めない

上記のような順序で処理されてしまいます。

少々ややこしくて頭がこんがらがってしまうかも知れませんが、noindex robots metaタグを用いて確実に検索結果で非表示にさせたい場合は、robots.txtファイルでクローラーの巡回を許可させましょう

Disallow:でブロックされたページへはページランクを受け渡さない

noindex,follow robots meta タグを記述したページは検索エンジンには表示されません。

しかし、検索エンジンはページの情報を取得していますし、クローラーはそのページに張られたリンク先へも移動します。

詳しくはrobots metaタグ(noindex,nofollow,noarchive)の使い方の記事で解説していますが、noindex,followが記述されていも、クローラーは記事の情報を取得しますし、その先に移動もしますが、検索結果には出さない(非表示にしてくれる)といったイメージです。

例えば、robots.txtファイルでブロックしているページが被リンクを獲得しても、クローラーはアクセスできませんので、ページランクの受け渡しができません。

noindex,follow robots metaタグが記述されているページが被リンクを獲得した場合、そのページに含まれるリンク先にページランクの受け渡しが行えます。

外部リンクに限らず、内部リンクの受け渡しや、クローラビリティの向上にも使えますので、robots.txtファイルを使うよりもメリットが多くなることも多いです。

robots.txtファイルとrobots metaタグの使い分ける時の考え方

  • robots.txtファイル:クローラーのアクセスを制御したい時
  • noindex robots metaタグ:インデクサを制御したい時
  • X-Robots-Tag:noindex meta タグが埋め込めないファイルのインデクサを制御したい時(PDF等)

インデックスの制御はnoindex robots metaタグを用いることが推奨されています。

注意点

robots.txtは使い方を誤ると、サイト全体のトラフィックを大きく減らしてしまう可能性があります。

使う際には十分に注意して使いましょう。

関連記事

引用タグ(blockquote,q,cite)の解説と使い方
強調タグ(strong,em)の解説と使い方と注意点
<link rel=”canonical”>(カノニカルタグ)の使い方
見出しタグの使い方。hnタグ(h1~h6)を正しく使い階層構造をもたせよう
リストタグ(ul,ol,li)の使い方と解説。箇条書きを正しく設定し構造を伝えよう
Open Site Explorerの無料のユーザー登録を行う方法
METAタグ(keywords description)の使い方
titleタグの使い方 – わかりやすいページタイトルを設定しよう
rel=”nofollow” 属性の解説とその使い方