我需要http://example.com转到https://www.example.com。现在它在浏览器中发出警告。我跟着:http://www.simonecarletti.com/blog/2011/05/configuring-rails-3-https-ssl/
从/ lib / middleware(Rails 3.1)加载
class WwwMiddlewareRedirect
def initialize(app)
@app = app
end
def call(env)
request = Rack::Request.new(env)
if request.host.starts_with?("example.com")
[301, {"Location" => request.url.sub("//", "//www.")}, self]
else
@app.call(env)
end
end
def each(&block)
end
end
生产环境
Example::Application.configure do
config.force_ssl = true
# Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
# config.force_ssl = true
config.middleware.use "WwwMiddlewareRedirect"
end
答案 0 :(得分:1)
如果您可以让您的网络服务器进行重定向,那通常是最好的。如果您使用的是Heroku或类似的平台,您无法让网络服务器为您重定向,请进行以下更改:
将中间件行更改为:
config.middleware.insert_before Rack::SSL, "WwwMiddlewareRedirect"
然后在你的gemfile中,包括:
gem 'rack-ssl', :require => 'rack/ssl'
答案 1 :(得分:0)
除非我误解,否则我认为你正在使用< 3.1 3.1应用程序的说明。在3.1中,您只需要将force_ssl设置为true,它将导致您想要的行为。