Posted in rails at 16:59:36 by ジュンヤ

ちょっとてこずったところがあって僕はもう少しかかってしまったけれど、以下の通りにやれば確実に5分以内にできると思います。

Item というモデルがあり、各レコードに対応したページが、
http://example.com/item/list/1、http://example.com/item/list/2 とします。

app/controller/item_controller.rb に以下の通り、sitemap アクションを追加。

class ItemController < ApplicationController
  def sitemap
    @headers['Content-Type'] = 'text/xml; charset=utf-8'
    @items = Item.find(:all)
    render_without_layout
  end
end

app/view/item/ 以下には sitemap.rxml という *.rxml 形式のテンプレートを作ります。

xml.instruct! :xml, :version=> '1.0', :encoding => 'UTF-8'
xml.urlset( :xmlns => 'http://www.google.com/schemas/sitemap/0.84') {
  xml.url {
    xml.loc('http://example.com/')
    xml.changefreq('daily')
    xml.priority('0.9')
  }
  @items.each do |item|
    xml.url {
      xml.loc("http://example.com/item/list/#{item.id}")
      xml.changefreq('weekly')
      xml.priority('0.5')
    }
  end
}

あとは、config/route.rb に

map.xml 'sitemap.xml' , :controller => 'item', :action => 'sitemap'

を追加し、http://example.com/sitemap.xml へのアクセスを http://example.com/item/sitemap に振るようにします。

http://example.com/sitemap.xml の内容を確認したら、Google ウェブマスター ツールよりサイトマップを登録。

以上、終わり。

やっぱり Rails 素敵です。

参考:
» typoをGoogle Sitemapに対応させる
» Generating Google SiteMaps with Ruby on Rails

railsカテゴリの最近の記事             

コメント・トラックバック

この記事のトラックバックURL

コメントを残す