所以这就是问题所在。
我有一个使用SSL的网站。 (https://www.archerandreed.com/)它很棒。
当您在浏览器中输入archerandreed.com/时,一切仍然很好。
不幸的是,当您在浏览器中输入https://archerandreed.com/或http://archerandreed.com/时,系统会向您发送SSL证书警告。
我想我可以为www.archerandreed.com&&添加证书。 archerandreed.com但heroku不再接受2个ssl端点。
那么可能的解决方案是什么?我假设一个解决方案是购买外卡域,但这很痛苦。我的应用程序是rails 3.2.6。如果它们是子域,是否可以强制使用SSL?我可以在routes.rb或config / environments / production.rb中执行此操作吗?感谢您提前提供任何帮助。
答案 0 :(得分:2)
所以我觉得我找到了我想要的东西,我认为这应该以某种方式记录在heroku ...
1)关闭config.force_ssl = true:
config.force_ssl = false # config/environments/production.rb
2)在application_controller中有以下内容:
class ApplicationController < ActionController::Base
before_filter :ensure_domain
before_filter :force_ssl
APP_DOMAIN = 'www.archerandreed.com'
protected
def force_ssl
if Rails.env.production?
redirect_to :protocol => 'https' unless request.ssl?
end
end
def ensure_domain
if Rails.env.production? && ((request.env['HTTP_HOST'] != APP_DOMAIN) )
# HTTP 301 is a "permanent" redirect
redirect_to( "https://#{APP_DOMAIN}", :status => 301) and return
end
end
end
答案 1 :(得分:0)
另一个解决方案(如其他几个线程中提到的那样 - 例如here)是使用DNS提供程序,如DNSimple,允许使用ALIAS记录。然后为您的裸域添加ALIAS记录(在本例中为archerandreed.com),因为您不想使用A记录将您的裸域指向heroku。
然后,您可以在production.rb中使用config.force_ssl
,而不必向应用程序控制器添加过滤器。