robots.txtの書き方(保存版)

今日は、いつか書こう書こうと思って、そのままにしておいた「robots.txt」にの書き方・書式について書きます。

robots.txtは「ロボッツ・テキスト」、または「ロボット・テキスト」と読みます。
robotではなく、robotsです。

robots.txtはサーチエンジンのクローラ(スパイダー)の、ファイルとディレクトリへのアクセスを制御するために使われます。

「secretsというディレクトリにあるファイルにはすべてアクセスさせたくない」とか、「himitsu.htmlというファイルだけはアクセスさせたくない」という使い方ができます。

「アクセスさせたくない」というのは、「インデックスさせたくない」すなわち「検索結果に表示させたくない」ということです。

「なぜ、検索結果に表示させたくないの?」と疑問に思うかもしれません。

さまざまなケースがあります。

たとえば、URLを自分が教えた限られた人にだけ見せたい場合です。
もしURLを知っている人が、どこかにそのURLを貼り付けたとしたら、クローラがたどってインデックスしてしまいます。

実際に、僕が以前に無料レポートスタンドに登録した無料レポートの入手URLがインデックスされていて、検索結果に表示されてます。
メールアドレスを収集するのが目的なのに、誰でも自由にダウンロードできてしまっては意味がないです。(??;

他の例として、有料リンクを掲載する場合があります。

Googleは有料リンクを全面的に禁止しているわけではありません。
PageRankを売ったりする無差別なリンク販売を禁止しているのです。

robots.txtでブロックしたページ経由でリダイレクトしてリンクさせれば、まったく問題ありません。

以下は、Googleのウェブマスター向けヘルプ センターからの引用です。

すべての有料リンクが Google のガイドラインに違反するわけではありません。リンクの売買も、検索結果の操作でなく宣伝を目的として行われる限り、ウェブ上での通常の経済活動となります。広告として購入したリンクでは、そのことを明示する必要があります。この処理は次のような方法で行うことができます。

  • rel=”nofollow” 属性を <a> タグに追加する
  • robots.txt ファイルによって検索エンジンからブロックされる中間ページにリンクをリダイレクトする

アフィリエイトリンクを隠すために短縮URLを使うアフィリエイターがいます。
短縮URLを記述したファイルを、検索エンジンにインデックスさせたくないときにも、robots.txtは使えます。

さて、前置きが長くなりました。

robots.txtの書き方を説明します。

簡単です。

robots.txtは、エディタ(Windowsに付属のメモ帳)で作成するシンプルなテキストファイルです。

記述する項目は、次の3つです。

  1. アクセスを制御するクローラのタイプ
  2. アクセスを許可するのか拒否するのか
  3. アクセスを制御するディレクトリ・ファイル

下は、robots.txtのサンプルです。

User-Agent: *
Disallow: /

最初の「User-Agent」は、クローラの指定です。
「*(アスタリスク、ワイルドカード)」は、すべてのクローラを表します。

Googleのクローラは「googlebot」、Yahoo!のクローラは「Slurp」、MSN Live Searchのクローラは「msnbot」で指定できます。

「Disallow」は、「アクセス拒否」を表します。
アクセスを許可するときは、「Allow」ですが、Disallowの記述がなければアクセスするので、わざわざAllowを指定する必要はありません。

Disallow(Allow)の後に続くのは、アクセスを制御するディレクトリまたはファイルです。

例の「/(スラッシュ)」は「ルートディレクトリ」を表します。

「ルートディレクトリ」とは、いちばん上の階層のフォルダです。
ディレクトリを指定すると、その中にあるすべてのファイルと、サブディレクトリがあるときはサブディレクトリの中のすべてのファイルがアクセス制御対象になります。

「/secrets/」とすると、ルートディレクトリの中にある「secrets」というディレクトリの中のファイルをアクセス制御できます。

「/onlyyou/himitsu.html」とすると、ルートディレクトリの中にある「onlyyou」というサブディレクトリの中の「himitsu.html」というファイルへのアクセスを制御できます。

以上を踏まえて、サンプルのrobots.txtを解釈してみましょう。

User-Agent: *
Disallow: /

「すべてのクローラ(User-Agent: *)は、ルートディレクトリ配下の全てのファイル(/)に、アクセスしてはいけません(Disallow)」という意味になります。

つまり、インデックスの完全拒否ですね。

別のサンプルです。

User-Agent: *
Disallow: /secrets/

すべてのクローラは、「secrets」フォルダのすべてのファイルにアクセスしてはいけません、という命令になります。

「secrets」フォルダはURLで表すと、「http://www.sample.com/secrets/」になります。

http://www.sample.com/secrets/noaccess/」にアクセスさせたくなければ、

User-Agent: *
Disallow: /secrets/noaccess/

になります。

ルートディレクトリの直下にある「secrets」フォルダの中の「ihateyahoo.html」ファイルを、Yahoo!の検索結果にだけ表示させたくなければ、次のようになります。

User-Agent: Slurp
Disallow: /secrets/ihateyahoo.html

目的の記述をテキストエディタで書いたら、「robots.txt」という名前で保存します。

作成したrobots.txtファイルを、ルートディレクトリ(ドメインのいちばん上の階層のフォルダ、URLの「/」で表記される)にアップロードします。
※ルートディレクトリにファイルをアップロードできない無料ブログでは、robots.txtは利用できません。

クローラは、アクセスしたときにいちばん最初にそのドメインのrobots.txtを探して、見つかれば記述内容に従うように設計されています。

ただ、robots.txtに従わない行儀の悪いロボットも存在しますのでご注意を。
msnbotなんかは、たまに無視します。(??メ

アクセス制御の手段としては、nofollow属性や、METAタグの「noindex」属性も利用できます。

しかし、nofollow属性の付いたリンクは、リンク先ページクローラがたどってインデックスすることが確認されています。

インデックスを拒否するMETAタグの記述は、次のようになります。

<meta name=”robots” content=”noindex” />

※HTML4の場合は、最後の「/」は不要。nofollowと共に使われることが多い。

「robots」はすべてのクローラを表します。
Yahoo!だけに拒否したかったら、「slurp」を指定します。

ただMETAタグでの指定も、たまに無視されます。
MSN Live Seachはもちろんのこと(笑)、たまにGoogleでさえも。

ネットには、robots.txtを簡単に作成できるツールが無料で公開されているので探してみてもいいでしょう。

Googleウェブマスターツールには、robots.txtファイルを作成できる機能が追加されています。

でも、そんなツールに頼らなくても、robots.txtは簡単に作成できます。

アクセス拒否(インデックス拒否)したいデータがないのならば、robots.txtはまったく必要ありませんが、長いことサイトを運営していると、いつかきっと必要になる日が来るはずです。

そのときには、このページを思い出してください。

ということで、ソーシャルブックマークに今すぐ登録です。(笑)