LoginSignup
78
62

More than 3 years have passed since last update.

Rails で gem sitemap_generator を使ってサイトマップを作る

Last updated at Posted at 2017-06-19

はじめに

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

設定

サイトマップの設定

基本的には先程作成された設定ファイルにパスを書いていけばいいだけです。

config/sitemap.rb
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 に関してはこの辺参照

実際に書いたコードは下記

config/schedule.rb
every 1.day, at: '5:00 am' do
  rake '-s sitemap:refresh'
end

クローラーにサイトマップの場所を教える

これには gem 'roboto' を使っているので下記コードを追加します。

config/robots/production.rb
Sitemap: http://example.com/sitemap.xml.gz

まとめ

以上でサイトマップを作成できるようになります。

参考

78
62
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
78
62