RailsのSEO対策にサイトマップを生成&自動更新・通知をする方法

Ruby on Rails

Railsでサイトマップを作成し自動更新・通知をするのは、とっても簡単に出来ます。

sitemap_generatorのインストール

gem 'sitemap_generator'

で、bundle installを実施。

 

wheneverのインストール

gem 'whenever', require: false

でこちらもbundle install実施(上と同時でOK)

 

sitemap_generatorの設定

設定用にまずは下記コマンドをコマンドラインで実施。

rake sitemap:install

これで、config/sitemap.rbという設定用ファイルが生成されました。デフォルトは下記設定です。

# Set the host name for URL creation
SitemapGenerator::Sitemap.default_host = "http://www.example.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
end

 

この設定をアレンジして、自身のサイトマップ用に調整します。このサンプルにも書き方がかいてあるので参考になるかとは思います。rootパスは自動的に追加される模様。

SitemapGenerator::Sitemap.default_host = "https://hogehoge.com/"
SitemapGenerator::Sitemap.compress = false
SitemapGenerator::Sitemap.create do
  add '/about', :priority => 0.9, :changefreq => 'weekly'
  add articles_path, :priority => 0.9, :changefreq => 'daily'
  Article.find_each do |article|
    add article_path(article), :priority => 0.7, :changefreq => 'daily'
  end
end

これでOK。私はネット上からそのまま確認したかったので、compressオプションをfalseにしています。これはtrueにしておけば、容量を圧迫しないのでそちらでもGOODです。

whenever設定

自動的に更新&通知するようにします。

every 1.day, :at => '5:30 am' do
  rake 'sitemap:refresh'
end

上記設定は、毎日朝5:30に更新&通知をするという設定です。

コメント