Ruby on Rails

【Ruby on Rails】gem sitemap_generator を使ってXMLサイトマップを作成

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

-Ruby on Rails