rails 3:https重定向,但仅限于一个特定的域名(或几个)

时间:2011-07-11 20:18:17

标签: ruby-on-rails redirect https

我的应用具有面向用户和面向公众的页面,可通过不同的子域user.example.com和public.example.com访问

我有一个针对user.example.com的ssl证书,当用户通过https进入时,一切正常。

我知道如何重定向到我的应用使用的任何域名的https,但不知道某个特定域名。

但是,如果有人进来http://user.example.com我想重定向到https://user.example.com,而不会对他们可能进入的其他子域(或域)进行特殊重定向。

有没有办法在rails中重定向到https来自某个特定子域的所有请求?

1 个答案:

答案 0 :(得分:1)

执行此操作的最佳位置是在您的Web服务器(例如Apache,nginx等)配置中。如果您没有访问权限,那么在ApplicationController中编写一个与request.hostrequest.ssl?进行比较的before_filter,例如:

def redirect_user_subdomain_to_https
  if 'user.example.com' == request.host && !request.ssl?
    redirect_to request.url.gsub(/^http/, 'https')
    return false
  end
end