rails5+nginxでrobots.txtやsitemap.xml.gzにアクセス出来ない時の対処法

全く気にしてなかったんだけど、新しいサービスリリース後にSearch Consoleでインデックスされるのが遅かったので、sitemapでも作るかーとsitemap_generatorを使ってサクッとsitemapを作った。

Search Consoleに登録する前にちゃんと出来ているかブラウザからアクセスしたところ、トップページにリダイレクトされる。
色々調べると、2通りの対処法があった。

1つ目:Railsのproduction.rbの設定を変更する

# Disable serving static files from the `/public` folder by default since
# Apache or NGINX already handles this.
config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present?

こんなのが設定ファイルに書いてあって、この「RAILS_SERVE_STATIC_FILES」って変数が存在すると、Railsが/public以下のファイルを配信(?)してくれるらしい。

でも、今回はnginxがリダイレクトしているのをログで確認していたので、どうもこれじゃないっぽい。
しかも、コメントにある通り、静的ファイルの配信はapacheかnginxがやってるからデフォルトだと無効化してあるよって書いてあるし。

2つ目:nginxの設定ファイルに追記

location ~ ^/sitemap.xml.gz {
    root /app/path/current/public;
}

これを記載して

systemctl reload nginx

でOK。

簡単だった。

コメント

タイトルとURLをコピーしました