2012-04-18 24 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