Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

heroku+railsでs3にsitemapを置く

More than 1 year has passed since last update.

目的

herokuだとsitemapを置けないためs3に置き、そこから読み込みをgoogleにさせる。

仕様概要

  • sitemapgeneratorでsitemapを作成
  • aws-sdkでs3に保存
  • sitemap専用のルーティングを作ってそれをsearchconsoleに送信
  • robots.txtにもsitemapの場所を記載

aws-sdkでs3に保存

sitemap.rbにsitemapの置き場所を記載

sitemap.rb
SitemapGenerator::Sitemap.default_host = ""
SitemapGenerator::Sitemap.sitemaps_host = "https://s3-ap-northeast-1.amazonaws.com/#{ENV['S3_BUCKET_NAME']}"
SitemapGenerator::Sitemap.adapter = SitemapGenerator::AwsSdkAdapter.new(
  ENV['S3_BUCKET_NAME'],
  aws_access_key_id: ENV['AWS_ACCESS_KEY_ID'],
  aws_secret_access_key: ENV['AWS_SECRET_ACCESS_KEY'],
  aws_region: 'ap-northeast-1'
)
SitemapGenerator::Sitemap.create do
  # '/articles/:id' を追加する
  Post.find_each do |post|
    add post_path(post), :lastmod => post.updated_at
  end
end

default_hostでwebsiteのURLを登録。sitemaps_hostでsitemapのURLを登録する。

herokuに環境変数登録

$ heroku config:add S3_BUCKET_NAME=bucket_name
$ heroku config:add AWS_ACCESS_KEY_ID=xxxxxxxxxxxxx
$ heroku config:add AWS_SECRET_ACCESS_KEY=xxxxxxxxxxxxxxxxxx

localはdotenvで環境変数登録

gemのdotenvを入れて環境変数の登録

sitemap専用のルーティングを作る

get '/sitemap' => redirect('https://s3-ap-northeast-1.amazonaws.com/sitename/sitemap.xml.gz')

robots.txtにsitemapの場所を記述

robots.txt
Sitemap: https://sitename/sitemap
you8
普段はSNSのプロダクトマネージャーをしています。広告とかチーム運営とかについてはここ( http://you88.space/ )。日曜大工的に個人開発しています。( https://twitter.com/you8802 )作ったランチ募集サービス https://www.tea-pot.net/
https://you88.space/
nana-music
音楽SNSサービス「nana」の開発・運営を行っているスタートアップ
https://nana-music.co.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away