对于那些希望也使用 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)
例如,我的测试应用程序使用test.foo.com作为 url,它也有自己的 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。旧链接会出现小问题,但没有什么明显的。