2009年11月6日金曜日

Rails 2.xで XMLサイトマップを生成する方法

Rails2.3で試した。
必要最低限の要素のみ。


config/routes.rb

map.connect "sitemap.xml", :controller => :test, :action => :sitemap


controllers/test_controller.rb
class TestController < ApplicationController
def sitemap
# サイトマップとして送信したいページのURL生成に必要な情報を取得する
@members = Member.find(:all)
@entries = Entry.find(:all)

  headers["Content-Type"] = "text/xml; charset=utf-8"

  respond_to do |format|
format.xml {render :layout => false}
end

end
end


views/test/sitemap.xml.builder
xml.instruct!
xml.urlset(:xmlns => "http://www.sitemaps.org/schemas/sitemap/0.9") do
# トップページ
xml.url do
xml.loc(url_for(:controller => :top, :only_path => false))
end
      
# 個別のページ
@members.each do |member|
xml.url do
xml.loc(url_for(:controller => :members, :action => :show, :id => member.id, :only_path => false))
end
end



end
「http://」から始まるフルなURLにするために「:only_path => false」を付けている。

状況によってはキャッシュさせた方が良いだろう。

検索エンジンへの通知はrobots.txt等で。(Google Webマスターツールとか使った方が安心感があるけど。)

robots.txt
# See http://www.robotstxt.org/wc/norobots.html for documentation on how to use the robots.txt file
#
# To ban all spiders from the entire site uncomment the next two lines:
# User-Agent: *
# Disallow: /

Sitemap: http://www.example.com/sitemap.xml


参考:
「はじめてのRuby on Rails2」著者サポートページ
Rails2.0でGoogleサイトマップとかのsitemap.xml作る - ひげろぐ
sitemaps.org - プロトコル

0 件のコメント:

ブログ アーカイブ

tags