2012-04-18 58 views
1

好了,我想所有非WWW域名請求重定向www.mydomain.com只是爲谷歌/搜索引擎的一致性(我知道所有關於規範標籤/谷歌網站管理員工具,讓我們忽略)重定向Rails非www到www而不會中斷用戶會話?

我知道標準方式通過Nginx(或Apache的htaccess)來完成。

但是,事情是這可能會破壞用戶會話嗎?例如,如果有人通過domain.com登錄,他們的cookies只會對domain.com有效,而不是www.domain.com,所以通過重定向我會讓所有用戶都必須重新登錄。

有沒有辦法讓重定向w/o中斷用戶會話?

也許我可以做一些事情,我檢查cookie?如果它不存在,那麼做重定向。如果是這樣,那麼不要重定向。

def index #controller method for requests from domain.com or www.domain.com 
    @user = @requestManager.authorizedUser(cookies, params, logger) //check for cookies 

    #if no cookies (Google bot or new visitor) 
    #and request is from domain.com, redirect to www.domain.com 

    if(@user == nil and request.host =~ /^domain.com/) 
      logger.info("Redirecting") 
      redirect_to "http://www.domain.com", :status => 301 
      return 
    end 
end 

將這項工作重定向非www會www.domain.com,並沒有破壞當前用戶會話?

+0

如果您將訪問www.example.com的實例重定向到example.com,則他們將始終登錄到example.com。 – 2012-04-19 01:20:25

+0

@JesseWolgamott,但我想要相反... – 2012-04-19 04:12:11

+0

反過來也是如此 – 2012-04-19 11:23:41

回答

0

如果一個cookie的域沒有被明確設置,它將被限制到它所在的站點的主機名。

如果您的用戶,你真的值,那麼這可能會實現自己的目標的長期課程:

  1. 修改網站設置域wtih所有Cookie。
  2. 使用Firebug檢查cookie將與新域名重發當用戶訪問該網站
  3. 等待一段時間,直到至少大多數用戶已經訪問了坐
  4. 啓用重定向

會話將丟失的用戶是在等待期間未訪問該站點的用戶。

+0

嗯......我聽到你的聲音。我在這個問題上提出的建議呢?那會給我我想要的嗎?大部分是 – 2012-04-19 04:12:41

+0

。如果你喜歡,你可以把兩者結合起來。 – 2012-04-20 00:34:43