はじめに
SEO 対策で Rails でサイトマップを作りたかったので、gem sitemap_generator
を使ってサイトマップを作成しました。
導入
bundle install
まずは Gemfile
に 'sitemap_generator' を追加して bundle install
。
gem 'sitemap_generator'
サイトマップの作成
その後 rake sitemap:install
を叩くと config/sitemap.rb
が作成され、このファイルがサイトマップの設定ファイルです。
続いて rake sitemap:refresh
とたたくと public/
配下に sitemap.xml.gz
が作成されます。
設定ファイルをデフォルトで作成されるファイル以外に変更したい場合は、サイトマップを作成する際に以下のオプションをつけます(下記は config/hogehoge.rb に変更)。
mv config/sitemap.rb config/hogehoge.rb
rake sitemap:refresh CONFIG_FILE='config/initializers/sitemap.rb'
以上でサイトマップ自体は作成されます。次は実際に設定ファイルを書いていきます。
ちなみに public/sitemap.xml.gz は git 管理したくないので、忘れないうちにここで .gitignore しておきましょう。
# Ignore sitemap file
public/sitemap.xml.gz
設定
サイトマップの設定
基本的には先程作成された設定ファイルにパスを書いていけばいいだけです。
SitemapGenerator::Sitemap.default_host = "http://www.example.com"
SitemapGenerator::Sitemap.create do
# '/articles' を追加する
add articles_path, :priority => 0.7, :changefreq => 'daily'
# '/articles/:id' を追加する
Article.find_each do |article|
add article_path(article), :lastmod => article.updated_at
end
end
上記でしれっと書いているがいくつかのオプションが使えます。詳しくは github を参照していただければと。
この状態で再度 rake sitemap:refresh
を叩くと設定ファイルの通りにサイトマップが作られます。
残りは
- サイトマップが自動生成されるようにする
- クローラーにサイトマップの場所を教える
の2つの作業が必要になります。
自動生成処理
自動生成は私は、whenever
を使ってバッチ処理を組みました。
whenever に関してはこの辺参照
実際に書いたコードは下記
every 1.day, at: '5:00 am' do
rake '-s sitemap:refresh'
end
クローラーにサイトマップの場所を教える
これには gem 'roboto'
を使っているので下記コードを追加します。
Sitemap: http://example.com/sitemap.xml.gz
まとめ
以上でサイトマップを作成できるようになります。