2015年1月10日土曜日

【Rails】Sitemapの更新

 Sitemapをつくってwebmastertoolから送信するのは、googleのクロール最適化の第一歩だが、Sitemapを手動でメンテナンスするのは大変。
そんなときは sitemap_generator を使う

script/sitemap.rb


SitemapGenerator::Sitemap.default_host = "http://www.hogehoge.com"

SitemapGenerator::Sitemap.create do
# Put links creation logic here.
#
# The root path '/' and sitemap index file are added automatically for you.
# Links are added to the Sitemap in the order they are specified.
#
# Usage: add(path, options={})
# (default options are used if you don't specify)
#
# Defaults: :priority => 0.5, :changefreq => 'weekly',
# :lastmod => Time.now, :host => default_host
#
# Examples:
#
# Add '/articles'
#
# add articles_path, :priority => 0.7, :changefreq => 'daily'
#
# Add all articles:
#
# Article.find_each do |article|
# add article_path(article), :lastmod => article.updated_at
# end

add '/about', priority:0.9
add '/rule', priority:0.5
add '/registration', priority:0.8
add '/inquiry', priority:0.1
Category.all.each do |cate|
next if cate.id/100==99
pri = 0.5
pri = 0.8 if cate.id/100 == 0
add category_path( cate.id ), priority:pri
end
Site.all.each do | site |
add site_path( site.id ), priority: 0.5, lastmod: site.updated_at
end
end
SitemapGenerator::Sitemap.ping_search_engines


トップページは明示的にaddしてかかなくてもsitemap.xmlの先頭にはいる。

実行


$ bin/rails r script/sitemap.rb
In '/deploy/hogehoge/current/public/':
+ sitemap.xml.gz 1890 links / 16.3 KB
Sitemap stats: 1,890 links / 1 sitemaps / 0m01s

Pinging with URL 'http://www.hogehoge.com/sitemap.xml.gz':
Successful ping of Google
Successful ping of Bing


publicの下に sitemap.xml.gz ができる。解凍しなくてもクローラーはそのままでsitemapとして読んでくれるので、
robot.txtとwebmastertoolに登録してあるsitemapのパスを代えておく。CGM的なコンテンツならこのスクリプトを
自動でまわしておけばOK.

余談: googleへのsitemap.xml ping

上のスクリプトを動かすと、最後に「Successful ping of Google」とでる。
webmastertoolからSitemapの送信はできるがログインがいる。どうやってやるのかと思ったら、
googleへはgetでパスを送るがけでsitemapの更新を知らせることができるんだ。

http://www.google.com/webmasters/sitemaps/ping?sitemap=http://www.direc.biz/sitemap.xml

Bingも同様なんだろう。

0 件のコメント:

コメントを投稿