Ruby On Railsで構築されたサイトでサイトマップXMLを生成する
sitemap_generatorを導入してサイトマップXMLを作成しよう
[ 目次 ]
はじめに
こんにちは、香港に住んでいるWEBデベロッパーのなかむ(@nakanakamu0828)です。
この記事は過去に運用していたブログからの移行記事になります。
sitemap_generator
というgemを利用して、Ruby On Railsで構築されたサイトにサイトマップXMLを生成します。
sitemap_generator インストール
まずはGemfileにsitemap_generatorの設定を追加します
# Gemfile
gem 'sitemap_generator'
続いてbundle installコマンドを実行し、ライブラリをインストールしてください。
$ bundle install
or
$ bundle install --path=vendor/bundle
※ 環境に合わせてプロジェクト配下にインストールするかどうかでコマンドを選択してください。
セットアップ
設定ファイル生成
以下のコマンドで設定ファイル`config/sitemap.rbを作成します。
$ rails sitemap:install
sitemap.rb設定例
# URLベースを指定。本番でしか利用しないので、本番のURLを直接記載で問題ない気がします。
SitemapGenerator::Sitemap.default_host = "http://www.example.com"
SitemapGenerator::Sitemap.create do
# '/items' を追加する
add items_path, :priority => 0.7, :changefreq => 'daily'
# '/items/:id' を追加する
Item.find_each do |item|
add item_path(item), :lastmod => item.updated_at
end
end
sitemap.xml.gz生成
以下のコマンドを実行することでサイトマップが生成されます。
$ rails sitemap:refresh
public/sitemap.xml.gz
が生成されたことを確認してください。
こちらのファイルは、git管理しません。.gitignoreに除外するよう設定しましょう。
以下のように.gitignore
へ追加することで除外できます。
# .gitignore
public/sitemap.xml.gz
cronで定期的にサイトマップXMLを更新する
whenever
を利用してサイトマップXMLを更新したいと思います。
インストールやセットアップについては、以前の投稿 Rails、cronでバッチを開発するなら「Whenever」 で利用方法をまとめています。ご確認ください。
生成コストも低いので毎時更新するように設定します。config/schedule.rb
ファイルに以下の設定を追加します。
every :hour, at: 00 do
rake '-s sitemap:refresh'
end
本番サーバーにてサイトマップXMLを生成するようにwhenever
の設定をしてみましょう。