TOP BLOG Rails| sitemap|

『Rails』 sitemap.xmlの作成&Google search consoleへ自動送信

どうも皆さん@ちょめこです。

このブログサイトは初学者の僕が独学で
Ruby on Railsで作ったブログサイトです。
間違っている所もあるかもしれません。
あくまで参考程度にしていただけたらなと思います。
何かありましたらお問い合わせか、Twitterよりご連絡下さい。



sitemap.xml を作成する前に


この記事は参考記事を見て実装した事を書いています。
いつも先輩方にはお世話になっております。
ありがとうございます。
参考記事はこちら


sitemap.xmlって何?

ウェブサイト内のURLを記述するxml形式のファイルのことです。
ユーザーに向けてのサイトマップとは別で、クローラーに向けてのファイルになります。

sitemap.xmlを作ることで、クローラーにサイトをしっかりと正しくクロールしてもらうために必要なものですね。

このsitemapを作る前にGoogle search consoleにまずは登録しましょう。

上のリンクから飛んで、今すぐ登録をクリックから登録してください。
ここでは登録の仕方は省きます。

Google search consoleの登録方法などで調べてみてください!

てかGoogle search consoleって何?

このGoogle search consoleは色んな事ができる無料ツールです。

例えば今から作るsitemapを送信して正しく早く検索エンジンに登録(インデックス)してもらったり

検索エンジンキーワードのトラフィックなどを知ることもできます。

って言っても初学者にはさっぱりなんだがわからないし、僕も全然扱えてませんw

でも今はそんなもんでいいと思います。

後から少しづつわかって行ってSEO対策に力入れて行けばいい!

とにかくまずはこのsitemap.xmlを送信すること!これをまずやっていく!

せっかく作ったサイトなんだから早く検索に出て欲しいもんw

ってことで早速作っていきましょーう!



gem sitemap_generator』



sitemap_generator を使うと、サイトマップ( sitemap.xml )を自動生成できる。

まずはgemの追加をします。

Gemfile
gem 'sitemap_generator'

そしてbundle

お次に設定ファイルを作成します。
rails sitemap:install

そしたらconfig/sitemap.rbが作成されていると思います。

ここに設定を書いていきます。

ちなみに僕はこんな感じで設定してみました。

config/sitemap.rbに
SitemapGenerator::Sitemap.default_host = "https://pgmg-rails.com"

SitemapGenerator::Sitemap.create do
  add root_path
  add blogs_path
  add index_path
  blogs = Blog.published
  blogs.each do |blog|
    add blog_path(blog), :lastmod => blog.updated_at
  end
end

ここではトップページ、ブログ一覧ページ、お問い合わせページ、公開記事だけをサイトマップに登録してます。

これはblogsにmodelで設定した公開記事と下書き記事で使ったenumの事ですね!
 blogs = Blog.published

enumの記事は前書いたのでよかったらどうぞ!


そして、published(公開)の記事をblogsに入れて、それをeach doで回してるって感じです!

blog_path(blog)は各IDを指してますね!

lastmod は、URLの最終更新日を指定する要素です。

あとはご自分の作品と相談して追加するなりしてください!


rails sitemap:create で生成


rails sitemap:create
でsitemap.xml.gzを生成します。

In '/Users/hogehoge/pgmg/public/':
+ sitemap.xml.gz                                          13 links /  467 Bytes
Sitemap stats: 13 links / 1 sitemaps / 0m00s

Pinging with URL 'https://pgmg-rails.com/sitemap.xml.gz':
  Successful ping of Google
  Successful ping of Bing

こんな感じに表示されたら生成完了です!

public/sitemap.xml.gz が生成されたとおもいます。

そしてここで.gitignoreに追加しときましょう!

.gitignoreってなんだ?

.gitignoreを使うと無視するファイル or ディレクトリを指定できます。

github等にpushしないように設定する場所って感じです。

詳しくは調べて見てください!ここでは説明省きます。

初学者は.gitignoreで結構ハマると思います。

僕はめっちゃハマりましたwww

pushしてはダメなやつをpushしちゃったりして1回pushしてしまったら、すぐ.gitignoreで無視させても無視されません!

お気をつけて.....githubから消す事で解決しますが、ミスったら恐ろしいことに.....。

githubから完全に消したと思ったら自分のローカルのワークスペースからも消えていた。

なんてことも、ちょめこにはありましたwww


サイトマップを自動更新


お次は作ったsitemapを自動で更新するgemを使ってみます。

例えば毎日sitemapを朝9時に自動で更新する設定とかができちゃいます。

いちいち手動で更新を伝える手間が省けますね!

Gemfileに追加
gem 'whenever', require: false

お決まりのbundle

そしたらconfig/schedule.rbファイルを作成します。

config/schedule.rbの作成 コマンドもあるけど手動で追加しました。
set :output, 'log/crontab.log'
env :PATH, ENV['PATH']
every 1.day, at: '9:00 am' do
    rake '-s sitemap:refresh'
end

毎日朝9:00にサイトマップ更新する設定にしてます。

更新すると同時にサーチエンジンに通知もしています。

自由に設定できるので調べてみて下さい!

rake sitemap:refresh を実行するとサーチエンジンに通知までしてくれます。

rake sitemap:refresh:no_ping を使えば通知を無効にしてくれます。

まだ通知したくないなら
rake sitemap:refresh:no_pingにしましょう。


デプロイでsitemapを自動作成


ここからはVPSにdeployしてる人向けです。

herokuにdeployする方は参考記事があったので、貼らせていただきます。
こちら

僕は本番環境にdeployするのにcapistrano3を使ってデプロイを自動化しています。

そのため下記はcapistrano3を使用してる前提での話になります。

capistrano3やデプロイの事は今後記事にまとめようと思っています。

正直エラー出まくりで苦戦しながら実装したので、記憶も自分でメモとったのも、グチャグチャなんで参考程度にしかならない記事になると思いますが...w

またその話は今後の記事で!!!!


まずはCapfileに追加
require 'whenever/capistrano'

config/deploy.rbに設定を書いていきます。
ここの設定は参考記事をそのままお借りしました。

以下引用します。
desc 'Generate sitemap'
  task :sitemap do
    on roles(:app) do
      within release_path do
        execute :bundle, :exec, :rake, 'sitemap:create RAILS_ENV=production'
      end
    end
  end

after  'deploy:restart', 'deploy:sitemap'

これでcapistranoでデプロイするとsitemapが作成されるようになりました!

毎度のようにデプロイをします。
bundle exec cap production deploy

さらにこちらをデプロイ後に実行
bundle exec cap production deploy:sitemap

これでVPS側でpublic内にsitemap.xml.gzが作成されていると思います!

CyberduckなどのFTPクライアントで確認したらわかりやすいと思います。

FTPクライアントとは、FTPサーバーに接続してファイルのアップロードやダウンロードを行うツールです。

僕はこれで確認するしか方法を知りませんwww

ここまでで無事sitemapを作成し、自動でdeployできて、毎朝sitemapを更新して通知までやれるようになっていると思います。

記憶も曖昧な中書いてるのでどこか抜けてるかもしれませんが、あくまで参考程度で見てもらえたらと思います。


Google Search Consoleにサイトマップを追加


最後に作ったsitemapをGoogle search consoleに追加してあげましょう。

site map

site mapはドメイン名/sitemap.xml.gzで追加する事ができます。

無事に追加できたら、成功しましたの文字が出ますので、サイトマップってとこをクリック後にこのページに飛びます。

サイトマップを開く

そして右上のサイトマップを開くから、

自分が指定したURLが作られているか確認して下さい。

これで以上になります!!

あとはインデックスされずにエラーだったり、問題があればガバレッジって所で詳細が見れるので
各自ググって修正しましょう!

RSSの生成をしてランキングサイトにRSSフィードを知らせる


サイトマップの上にRSSってのが見えると思います。

これを次回の記事で説明して生成のやり方を教えようと思います。

ランキングサイト等に教えて記事のリンクを作ってくれるので、ぜひ参考にしていただけたらと思います!

最後に


ここまで読んでくれてありがとうございました。

そしてもう一度言います。

先輩方のメモに初学者の僕たちはすごい助かっています。

いつも記事に残していただきありがとうございます。

僕もそんな存在になりたいので少しでも参考になるように、記事に試した事を残していきます。

間違った所や抜けてるとこがあるかもしれませんが、もしわかったら優しく教えていただけたら嬉しいです。

そしてちょっとでも参考にしてくれてる初学者の同士よ。

お互い頑張ろうぜえええええ!!!!!!

以上!!!

ランキング参加中〜♫ ポチッと!

ブログランキング・にほんブログ村へ
戻る