検索エンジンにRSSをクロールしてもらうための2つの方法
Yahoo!やGoogleにサイト内のページをうまくインデックスしてもらう方法として有効なものにRSSファイルをクロールさせ、ページ情報を取得してもらう方法があります。
今回は、うまくRSSを検索エンジンに取得してもらうための2つの方法をご紹介します。
方法1:定番のファイル名で<link>タグに記述する
Googleでは、RSSファイルへのパスを勝手に考えて配置してもクロールしてくれません。 以下の名前で配置すると正しくクロールされることが確認されています。
RSSの種類別設定
RSS1.0の場合
<link rel="alternate" type="application/rss+xml" title="RSS1.0" href="index.rdf" />
RSS2.0の場合
<link rel="alternate" type="application/rss+xml" title="RSS2.0" href="rss.xml" />
Atom1.0の場合
<link rel="alternate" type="application/atom+xml" title="Atom1.0" href="atom.xml" />
他のパス名やファイル名ではクロールしてくれない?
私が行った施策は、以下のようにディレクトリパス(スラッシュで終わるURL)でRSSを取得できるようにする方法でしたが、Yahoo!にはクロールされましたが、3日経ってもGoogleにクロールされることがありませんでした。
<link rel="alternate" type="application/rss+xml" href="/path/to/rss/" title="RSS2.0" />
したがって、RSSを<head>タグの中で<link>タグを使って配置する場合は最初に書いた典型的なRSSファイル名で作成し、配置することをおすすめします。
方法2:<body>タグの中でRSSへのリンクを作成する
もう一つの方法は、RSSがどんなパスであってもちゃんとクロールされる方法です。
それは、ページ中にRSSファイルやパスへのリンクを<a>タグを使って埋め込むこと。
よくあるのは、ニュースサイト等でRSSアイコンにリンクを張ってRSSパスを指定する方法です。 これを<link>タグで指定してもクロールしてもらえなかった、ディレクトリパスによるRSSパスで行ってみます。
<a href="/path/to/rss/"><img src="rss.gif" alt="rss" /></a>
こうしておくと、例えばYahoo!のクローラーは以下のようにしてRSS情報を取得していきます。
Yahoo! Slurp
b3090788.crawl.yahoo.net - - [06/Apr/2010:07:02:03 +0900] "GET /path/to/rss/ HTTP/1.0" 200 5703 "-" " Mozilla/5.0 (compatible; Yahoo! Slurp/3.0; http://help.yahoo.com/help/us/ysearch/slurp)"
Googleのクローラーは以下のような感じ。
Googlebot
crawl-66-249-67-184.googlebot.com - - [06/Apr/2010:02:05:32 +0900] "GET /path/to/rss/ HTTP/1.1" 200 5739 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
RSSファイルをPHPやPerlで動的に作成するサイトなど、自作で配置する場合は知っておくと良いでしょう。
2010-04-06