2011-07-11 67 views
2

我的應用具有面向用戶和麪向公衆的頁面,這些頁面通過不同的子域訪問user.example.com和public.example.comrails 3:https重定向,但僅限於一個特定域名(或多個)

我有一個ssl用戶user.example.com證書,並且當用戶通過https進入時它都可以正常工作。

我知道如何將https重定向到我的應用使用的任何域,但不是針對某個特定的域。

但是,如果有人進入http://user.example.com,我想重定向到https://user.example.com,而不對其他子域(或域)進行特殊重定向,以免它們進來。

有沒有辦法在軌道重定向到HTTPS所有請求來到一個特定的子域?

回答

1

最好的地方是在你的網絡服務器(例如Apache,nginx等)配置中。如果您沒有訪問到,然後寫在一個ApplicationController的那個的before_filter比較反對request.hostrequest.ssl?例如爲:

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 
+1

看起來有趣,謝謝。我在heroku上,所以沒有,沒有訪問Web服務器配置。會給一個嘗試,謝謝! – jpwynn

+0

我在heroku應用上使用這個基本方法就好了。 –

相關問題