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エラーが出る可能性があります。