Heroku を使用して SSL を強制することも検討している場合、ルート ドメインの Heroku SSL に基づいて、これはうまくいきました。
DNS 設定で、URL / 転送レコードを設定しました (DNS シンプル)
URL foo.com 3600 http://www.foo.com
CNAME セットアップは、WWW 用にセットアップする必要があるだけです。
CNAME www.foo.com 3600 providedssslendpoint.herokussl.com
また、ルートのエイリアスをセットアップする必要がありました
ALIAS foo.com 3600 providedsslendpoint.herokussl.com
次に、foo.comを env 変数ENV['SITE_HOST']
(SITE_HOST は www.foo.com または test.foo.com に等しい) に置き換えるだけで、heroku 構成を介して制御できるようにすることにしました。そうすれば、さまざまな環境で何が起こるかを制御できます。(環境変数をローカルで設定するには、https://github.com/bkeepers/dotenvを参照してください)
たとえば、私のテスト アプリはURL としてtest.foo.comを使用し、独自の SSL エンドポイントも持っているため、問題なく動作します。
before_filter :check_domain
def check_domain
if Rails.env.production? || Rails.env.testing? and request.host.downcase != ENV['SITE_HOST']
redirect_to request.protocol + ENV['SITE_HOST'] + request.fullpath, :status => 301
end
end
今後、エンド ユーザーは常に強制 SSL を使用して www にアクセスします。古いリンクは少しハングしますが、目立ったものはありません。