vdeep

*

vdeepはプログラミング、IT、Web技術、ライフハックの事などなどを管理人okutaniがつぶやくブログです

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

      2017/12/10

LINEで送る
Pocket


こんにちは、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リポジトリは以下です。

LINKjtrupiano/rack-rewrite: A web server agnostic rack middleware for defining and applying rewrite rules. In many cases you can get away with Rack::Rewrite instead of writing Apache mod_rewrite rules.

それでは、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ユーザーの参考になれば幸いです。

LINEで送る
Pocket

okutani (okutani_t) のヒトコト
Rails側で301リダイレクトがかんたんに実装できていいですね。ドメインを統一することでGoogleの評価もあがるので、ぜひ試してみてください

Web開発のお仕事を募集しています

フリーランスのエンジニアとして、Webシステム開発のお仕事依頼を随時募集しています(現在の業務量によってお受けできない場合もあります)。

Ruby on Rails」「JavaScript(jQuery, Reactなど)」「HTML + CSS」を用いたシステム開発、「Heroku」等を用いたサーバー構築・運用、「Git」や「GitHub」を利用したソーシャルコーディングなどに対応しています。

ご依頼を検討している方は、下記リンク本ブログからのお問い合わせ、もしくはokutaniのポートフォリオからご連絡ください。

LINKお問い合わせ

LINKokutani's Portfolio


 - Ruby on Rails

スポンサーリンク

PC用AdSense

PC用AdSense

  こちらもどうぞ

vdeepのトップページへ戻る画像です。風船の形をした島を女の子が掴んでいます。