vdeep logo

okutaniの技術とか雑記とかのBLOG.

【Rails】「rack-rewrite」gemでドメインごと301リダイレクトさせる

2017/10/21

2025/7/31

https://res.cloudinary.com/vdeep/image/upload/v1753973931/articles/rubyonrails-rack-rewrite-580x358_xlw2u8.jpg

こんにちは、okutaniです(@okutani_t)。本記事ではRuby on Railsでリダイレクト処理が書ける「rack-rewrite」gemの使い方について解説しています。

rack-rewriteの公式GitHubリポジトリは以下です。

jtrupiano/rack-rewrite

それでは、rack-rewriteの導入方法から見ていきましょう。

rack-rewriteの導入

Gemfileに以下を追記します。

gem 'rack-rewrite'

bundlerでインストール。今回は--pathオプションをつけてプロジェクト直下に導入。

$ bundle install --path vendor/bundle

これでrack-rewriteの導入完了です。

rack-rewriteの設定

リダイレクトの設定をおこなっていきます。

config/initializers/rack_rewrite.rb」を以下の内容で作成。

if ENV['RACK_ENV'] == 'production'
  MyAppName::Application.config.middleware.insert_before(Rack::Runtime, Rack::Rewrite) do
    r301 %r{.*}, 'https://www.example.com$&', :if => Proc.new {|rack_env|
      rack_env['SERVER_NAME'] == 'example.herokuapp.com'
    }
  end
end

上記の「MyAppName」「https://www.example.com」「example.herokuapp.com」は適宜プロジェクトに合わせて書き換えてください。

これで、production環境で「https://example.herokuapp.com」にアクセスすると「https://www.example.com」に301リダイレクトされます。

かんたんではありましたが、「rack-rewrite」gemを使って301リダイレクトをおこなう方法について解説しました。

Railsユーザーの参考になれば幸いです。