【Rails】「rack-rewrite」gemでドメインごと301リダイレクトさせる
2017/12/10
こんにちは、okutaniです(@okutani_t)。本記事ではRuby on Railsでリダイレクト処理が書ける「rack-rewrite」gemの使い方について解説しています。
今回、rack-rewrite gemを使おうと思ったきっかけは、Herokuで立ち上げたアプリのドメイン「https://アプリ名.herokuapp.com」を、「https://www.独自ドメイン」にリダイレクトさせてドメインを統一させたかったからです(参考Herokuにムームードメインで取得した独自ドメインを利用 & SSL化 | vdeep)。
なので、本記事ではHerokuアプリでのリダイレクトを想定して記事にしています。
rack-rewriteの公式GitHubリポジトリは以下です。
それでは、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ユーザーの参考になれば幸いです。
Web開発のお仕事を募集しています
フリーランスのエンジニアとして、Webシステム開発のお仕事依頼を随時募集しています(現在の業務量によってお受けできない場合もあります)。
「Ruby on Rails」「JavaScript(jQuery, Reactなど)」「HTML + CSS」を用いたシステム開発、「Heroku」等を用いたサーバー構築・運用、「Git」や「GitHub」を利用したソーシャルコーディングなどに対応しています。
ご依頼を検討している方は、下記リンク本ブログからのお問い合わせ、もしくはokutaniのポートフォリオからご連絡ください。
LINKお問い合わせ
スポンサーリンク