2007年11月16日

robots.txtとサイトマップ

たまたまこのウェブサイトのアクセスログを見ていたら、いわゆるクローラらしいのが、存在しないrobots.txtを探して、404が返った後、そのまま何もしないで帰ってしまうことがあるのに気づきました。まあこれはおそらく、しばらくしてからまた来るとか、次は違うIPアドレス/ユーザーエージェントで見に来てるとか、そういうおちだと思いますが、もしもクローラがrobots.txtがないことを理由に、クロールしていかない場合があったりするんだったら(大手検索サイトのクローラは絶対そんなことはないですが)、それはなんだか少し勿体無い気がしたので、今度からこのサイトにもrobots.txtを置いておくことにしました。

そこで、robots.txtの書式を調べていて初めて知ったのですが、robots.txtにサイトマップファイルへのパスを記述してクローラにサイトマップ(いわゆるこっちの意味でのサイトマップです)を用意していることを知らせることができるんだそうです。確かにrobots.txtとサイトマップは、クローラだけに見てほしい物なので、これはうまい仕組みですね。しかも現在、Google、Yahoo、MSN、Askなどの大手検索エンジンはすでに対応済みだとのこと。今までもこのサイトでは、「Google ウェブマスター ツール」を利用して、Googleにだけはサイトマップを通知していましたが、今度からは他のクローラにも、この方法を使って簡単にサイトマップの存在を知らせることができます。詳しい内容はこちらに書かれています。

sitemaps.org - プロトコル
http://www.sitemaps.org/ja/protocol.php#submit_robots

少し引用します。

サイトマップの場所を指定するには、robots.txt ファイルを使用します。 次の行を追加してください。

サイトマップ: <sitemap_location>

<sitemap_location> には、下記のようにサイトマップへの完全な URL を指定します。 http://www.example.co.jp/sitemap.xml

このコマンドは user-agent の行には依存しないため、ファイル内の任意の場所に置くことができます。 サイトマップ インデックスファイルをご利用の場合は、そのファイルの場所だけを含めることができます。 インデックスファイルでリストされている個々のサイトマップをリストする必要はありません。

ということで、このサイトのrobots.txtはこんな感じになりました。

Sitemap: http://www.perfectsky.net/sitemap.xml

User-agent: *
Disallow:

シンプルです(笑)。ネットをいろいろ見ていると、User-agentの行とDisallowの行の間に、Sitemapの行を突っ込んでいる例が多々見られるのですが、先ほどの引用にもあるとおり、Sitemapの行は特定のユーザーエージェントに対する記述ではありませんので、問題はないにせよ、その書き方はちょっと不自然だと思います。

2007年11月16日 19:40