PR
railsでのアプリケーション実装が完了したら、せっかくなのでSEO対策もやっていきましょう。
小さなアプリであれば必要はないのですが、定期的に記事を更新したりデータを更新して都度sitemapをアップデートさせたいのであれば、全て自動化してやってしまうと楽です。
今回の記事では、sitemapの自動生成更新・S3への自動アップデートを行うサンプルを記載します。
sitemap_generatorを導入する
“sitemap_generator”という、railsでsitemapを生成する便利なgemがありますので、まずはこちらを導入します。AWSのS3に定期的にアップロードするので、併せてaws-sdkも導入しておきます。
# Gemfile
gem 'sitemap_generator'
gem 'aws-sdk'
bundle install
ターミナルでアプリケーションのルートに移動し、
rake sitemap:install
を実行し、config/sitemap.rbを作成します。
sitemap_generatorの設定
S3への自動アップロードと、作成するサイトマップの中身を、sitemap.rbに記述していきます。
require 'aws-sdk-s3'
# S3へアップロードするためのアダプタ設定
SitemapGenerator::Sitemap.default_host = "https://sample.com/"
SitemapGenerator::Sitemap.sitemaps_host = "http://s3-ap-northeast-1.amazonaws.com/sample-sitemaps"
SitemapGenerator::Sitemap.adapter = SitemapGenerator::AwsSdkAdapter.new('sample-sitemaps',
aws_access_key_id: "AWS_ACCESS_KEY_ID",
aws_secret_access_key: "AWS_SECRET_ACCESS_KEY",
aws_region: "AWS_REGION"
)
# 作成するサイトマップの設定
SitemapGenerator::Sitemap.create do
add samples_path, changefreq: 'daily'
Sample.find_each do |sample|
add sample_path(sample), changefreq: 'daily', lastmod: sample.updated_at
end
end
詳細はsitemap_generatorの公式ドキュメントを参照してください。
sitemap_generator
rake sitemap:refresh
この状態で、上記コマンドを実行すると、sitemapファイル郡がS3にアップロードされます。
定期的に更新したsitemapをS3にアップロードする
先程手動で実行したrake sitemap:refreshを自動で定期的に実行するようにcrontabを設定します。
アプリケーションが動いているサーバーに接続し、crontabを設定します。
crontabの設定
crontab -e
以下は毎分サイトマップを更新・S3にアップロードする記述になります。
* * * * * bundle exec rake sitemap:refresh
実際に運用する際には、1周間に一度や1月に一度など、適宜修正してください。
PR
PR