世界を旅して暮らしたい放浪エンジニアブログ

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の設定をしてみましょう。

前のページ

次のページ

Profile

なかむ🇭🇰Webデベロッパー

なかむ🇭🇰Webデベロッパー

香港在住4年目になるWEBエンジニアのなかむです。 現在は、LaravelやRailsを利用したWEB開発を中心にエンジニアをしています。 顧客は全て日本の企業になります。リモート開発にて各企業様の支援を行なっております

プロフィール詳細はこちら

Latest Posts