XMLサイトマップの作成は、SEO対策にか欠かせない要素の一つです。Ruby on Railsでは、sitemap_generator
というGemを使うと、XMLサイトマップをカンタンに実装できます。実際に使ってみた際の備忘録メモです。
Gem SitemapGeneratorの使い方
https://github.com/kjvarga/sitemap_generator
1. お決まりのGemfile追加からのbundle install
gem "sitemap_generator"
2. 設定ファイルの生成
$ rails sitemap:install
config/sitemap.rb
が生成される
3. 設定ファイルを修正
# 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
自動生成されたファイルに例が書いてあるので、それに従って書けばOK
ルーティングに合わせて書いていくイメージ
4. サイトマップを登録・更新
以下のコマンドを叩くと、設定ファイルで指定した場所(defaultではpublic直下)にsitemap.xml.gzが生成される
$ rails sitemap:refresh
開発環境で試す場合は、以下のコマンドを叩く(searchエンジンにpingしない)
$ rails sitemap:refresh:no_ping
デフォルトの設定だと、http(s)://ドメイン名/sitemap.xml.gz
に生成されるので、
これをGoogle Search Consoleにアップロードすれば完了
5. 更新用のcronを設定
herokuの場合
herokuの場合、heroku schedulerを使って、rails sitemap:rehash
を登録するだけ
gem wheneverを使う場合
# config/schedule.rb
every 1.day, :at => '5:00 am' do
rails "-s sitemap:refresh"
end
heroku以外の場合
頑張ってcronを設定する
6. Robots.txtに追加
サーチエンジンが検索しやすいように、robots.txtにサイトマップのURLを追記する
Sitemap: http://www.example.com/sitemap.xml.gz
7. gitignore を設定
# Ignore sitemap file
public/sitemap.xml.gz