0

所以問題在這裏。與godaddy在heroku上添加一個SSL證書

我有一個使用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中做到這一點嗎?感謝您提前提供任何幫助。

回答

2

所以我覺得我找到了我一直在尋找,我認爲這應該以某種方式在Heroku上進行記錄...

1)關閉config.force_ssl =真:

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 
+0

你是對的,我今天已經花費在試圖解決這個問題上。 Heroku應該在他們的文檔上有這個。 – Benjamin 2012-09-12 06:44:51

0

另一種解決方案(如在幾個其他線程長大 - 例如here)是使用諸如DNSimple一個DNS提供商允許噸他使用ALIAS記錄。然後爲裸體域(在本例中爲archerandreed.com)添加一個ALIAS記錄,因爲您不想使用A記錄將您的裸域指向heroku。

然後,您可以在production.rb中使用config.force_ssl,而無需向您的應用程序控制器添加過濾器。