【问题标题】:Redirecting Rails non www to www without disrupting user sessions?在不中断用户会话的情况下将 Rails 非 www 重定向到 www?
【发布时间】:2012-04-19 10:22:02
【问题描述】:

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

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

但是,这可能会破坏用户会话,对吧?例如,如果有人通过 domain.com 登录,他们的 cookie 将只对 domain.com 有效,而不是 www.domain.com,所以通过重定向我会让所有用户都必须重新登录。

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

也许我可以做一些检查 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,并且不会中断当前用户会话?

【问题讨论】:

  • 如果您将人们访问 www.example.com 的实例重定向到 example.com,那么他们将始终登录到 example.com。
  • @JesseWolgamott 但我想要相反...
  • 反之亦然
  • @JesseWolgamott 因此,如果有人拥有 example.com 的 cookie,而我重定向到 www.example.com,他们根本不需要重新登录?
  • 您在接受此更改后是否担心现有用户?

标签: ruby-on-rails cookies


【解决方案1】:

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

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

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

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

【讨论】:

  • 嗯...我听到了。我在问题中提出的建议怎么样?那也会给我我想要的吗?
  • 主要是。如果您愿意,可以将两者结合起来。
猜你喜欢
  • 2021-09-13
  • 1970-01-01
  • 2018-06-06
  • 1970-01-01
  • 1970-01-01
  • 2014-08-03
  • 2023-04-02
  • 2019-03-09
相关资源
最近更新 更多