2

好的,所以我想将所有非 www 域请求重定向到 www.mydomain.com 只是为了谷歌/搜索引擎的一致性(我知道所有关于规范标签/谷歌网站管理员工具的知识,让我们忽略它)

我知道通过 Nginx(或 Apache 的 htaccess)执行此操作的标准方法。

但是,问题是这可能会破坏用户会话,对吗?例如,如果有人通过 domain.com 登录,他们的 cookie 将仅对 domain.com 有效,而不是 www.domain.com,因此通过重定向我会让所有用户都必须再次登录。

有没有办法在不中断用户会话的情况下进行重定向?

也许我可以做一些检查cookies的事情?如果它不存在,则进行重定向。如果是,则不要重定向。

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,并且不会中断当前用户会话?

4

1 回答 1

0

如果没有明确设置 cookie 的域,它将被限制为设置它的站点的主机名。

如果您的用户有您真正重视的长期会话,那么这可能会实现您的目标:

  1. 修改您的网站以使用所有 cookie 设置域。
  2. 当用户访问站点时,使用 firebug 检查 cookie 是否与新域一起重新发布
  3. 等待一段时间,直到您的大多数用户都访问过该站点
  4. 启用重定向

会话将丢失的用户是在等待期间未访问该站点的用户。

于 2012-04-19T02:22:02.363 回答