Help us understand the problem. What is going on with this article?

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

はじめに

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

まとめ

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

参考

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away