我的应用具有面向用户和面向公众的页面,可通过不同的子域user.example.com和public.example.com访问
我有一个针对user.example.com的ssl证书,当用户通过https进入时,一切正常。
我知道如何重定向到我的应用使用的任何域名的https,但不知道某个特定域名。
但是,如果有人进来http://user.example.com我想重定向到https://user.example.com,而不会对他们可能进入的其他子域(或域)进行特殊重定向。
有没有办法在rails中重定向到https来自某个特定子域的所有请求?
答案 0 :(得分:1)
执行此操作的最佳位置是在您的Web服务器(例如Apache,nginx等)配置中。如果您没有访问权限,那么在ApplicationController中编写一个与request.host
和request.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