railsでサイトマップを作成する
準備
Gemfileに以下を追加
gem 'sitemap_generator'
追加したらbundle install。
インストールできたら以下のコマンドを実行
$ rake sitemap:install
実行するとconfig/sitemap.rbが作成されるので これに、作成したいサイトマップの設定を書いていきます。
# サイトのホスト名
SitemapGenerator::Sitemap.default_host = 'http://example.com'
#サイトマップのパス(この場合public/sitemaps以下にsitemapができる)
SitemapGenerator::Sitemap.sitemaps_path = 'sitemaps/'
ここから、実際にサイトのどのページを追加するかを指定する。
以下では、albumとして登録されているすべてのページを登録しています。
SitemapGenerator::Sitemap.create do
# これだとhttp://example.com/shopsというページを
# 更新頻度を毎月、優先度を0.75という形で登録しています
add '/shops', :changefreq => 'monthly', :priority => 0.75
# これはAlbumモデル全件のページを取得してインデックスに登録します。
# 最終更新日をalbumのupdated_atに、更新頻度を毎日に設定
Album.find_each do |album|
add "/albums/show_pictures/#{album.id}", :lastmod => album.updated_at, :changefreq => 'daily', :priority => 0.75
end
end
サイトマップの送信
production環境の場合、以下のコマンドを実行します(developの場合はRAILS_ENV=production)は必要ありません。
$ rake sitemap:refresh RAILS_ENV=production
以下のように表示されれば成功です。
In '/home/azureuser/hogehoge/public/':
+ sitemaps/sitemap.xml.gz 666 links / 2.82 KB
Sitemap stats: 666 links / 1 sitemaps / 0m00s
Pinging with URL 'http://hogehoge/sitemaps/sitemap.xml.gz':
Successful ping of Google
Successful ping of Bing
これで、google, bingに更新を通知しているようです。public/sitemapsフォルダに、sitemap.xml.gzが出来上がっているので、一応確認したほうがいいでしょう。
これをwheneverで実行するために、config/schedule.rbに以下を追加します。
every 1.days do
rake "sitemap:refresh", :enviroment => :production
end
追加したら、以下のコマンドで自動更新スケジュールを登録します。
$ bundle exec whenever --update-crontab
これで、サイトマップ自動更新が出来ました。
shirusu-ni-tarazu.hatenablog.jp
railsで写真共有サイトを作成しました。
作成までの過程をまとめてアップしたい・・