Rails:重定向到特定域...但不要覆盖SSL?

And*_*rew 4 ssl ruby-on-rails request ruby-on-rails-3

所以,我正在将我的rails(3.0.9)应用程序从一个域移动到另一个域.Heroku建议在应用程序控制器中使用before_filter,以确保每个人都在新域上,如下所示:

before_filter :ensure_domain if Rails.env.production?

APP_DOMAIN = 'www.newdomain.com'

def ensure_domain
  if request.env['HTTP_HOST'] != APP_DOMAIN
    redirect_to "http://#{APP_DOMAIN}", :status => 301
  end
end
Run Code Online (Sandbox Code Playgroud)

但是,在我正在使用的某些控制器视图上ssl_requirement,我相信它会做同样的事情但强制ssl协议.

对于请求处理和所有爵士乐,我并不那么聪明.我的问题是,这两个是否会创建一个无限循环,SLL尝试重定向到https,而过滤器尝试将其重新发送到http?

你会如何解决这个问题?

tad*_*man 5

尊重当前的协议:

redirect_to("#{request.protocol}#{APP_DOMAIN}", :status => 301)
Run Code Online (Sandbox Code Playgroud)