0

所以这就是问题所在。

我有一个使用 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 中这样做吗?感谢您提前提供任何帮助。

4

2 回答 2

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
于 2012-07-28T16:05:06.863 回答
0

另一个解决方案(正如在其他几个线程中提出的 - 例如这里)是使用 DNS 提供程序,如允许使用 ALIAS 记录的 DNSimple。然后为您的裸域(在本例中为 archerandreed.com)添加 ALIAS 记录,因为无论如何您都不想使用 A 记录将裸域指向 heroku。

然后您可以config.force_ssl在 production.rb 中使用,而不必向您的应用程序控制器添加过滤器。

于 2013-02-06T17:20:31.457 回答