Posted at

RailsアプリでSSL+www付きに自動的にリダイレクトする設定

More than 5 years have passed since last update.

Rails3でsslに自動的にリダイレクトするのは、 config/enviroments/production.rb

config.force_ssl = true

の設定を入れればOKです。

ネイキッドドメインにアクセスが来た場合に自動的にリダイレクトするには rack-canonical-host のgemを利用します。

Gemfile

gem 'rack-canonical-host'

config/initializers/canonical_host.rb

require "rack/ssl"

unless Rails.env.development?
Rails.application.config.middleware.insert_before Rack::SSL, Rack::CanonicalHost, ENV["APP_HOST_NAME"]
end

のように設定を入れておきます。

wwwつきのURLを環境変数 ENV[APP_HOST_NAME]に入れている場合のサンプルです。

ここでのポイントは、 insert_before で SSL のmiddleware の前に入れていることです。そうすることで、

http://example.com にアクセスが有った場合に

http://www.example.com にリダイレクト

https://www.example.com にリダイレクト

となります。もしSSLへのリダイレクトが先に来ると、 https://example.com にアクセスすることになりSSLエラーが出る可能性があります。