由於我的通配符SSL不支持根域,因此我正在使用Rack Rewrite將我的apex/root域重定向到我的www域。我也想強制SSL站點範圍,但似乎無法讓我的重寫發生在強制SSL之前。我已經嘗試了一些東西,也就是在這個答案的響應:https://stackoverflow.com/a/8217170/535632force_ssl之前的機架重寫Rails> 3.2 Heroku
這裏是我重寫代碼:
Gospot::Application.config.middleware.insert_before(Rack::Runtime, Rack::Rewrite) do
if Rails.env.production?
r301 %r{.*}, Proc.new {|path, rack_env| "http://www.#{rack_env['SERVER_NAME']}#{path}" },
:if => Proc.new {|rack_env| rack_env['SERVER_NAME'] == 'mydomain.com'}
end
end
我已經試過:
require 'rack/ssl'
Gospot::Application.config.middleware.insert_before(Rack::SSL, Rack::Rewrite) do
而不是在production.rb
使用config.force_ssl = true
但在Heroku上出現以下錯誤:
No such middleware to insert before: Rack::SSL (RuntimeError)
是否有無法在force_ssl之前運行我的機架重寫?我發現了很多答案,但它們似乎都適用於Rails < 3.1
謝謝,我沒有想到有關創建CNAME的頂點記錄到WWW(目前我只是它要Heroku的應用程序)。 –