1

问题

我的域是www.example.com。如果用户登录然后关闭选项卡,然后打开它并转到www.example.com,会话将继续正常,用户登录。

但是,如果他们键入example.com(没有www.),那么他们会显示已注销,并且如果我放置print_r($_SESSION)任何内容都不会出现。但是,单击页面上的任何链接(将用户重定向到www.example.com/link)会恢复他们的会话。

因此,我意识到用户在输入example.com时显示已注销,而没有尾随www - 这是很多用户(如我自己)经常做的事情。

问题

我可以看到解决此问题的两种方法是:

  • 找到一种$_SESSION适用于任何 url 子域(或缺少子域)的方法
  • 将输入example.com的用户重定向到www.example.com

其中任何一个是否可行,如果可行,最佳实践是哪一个?

4

1 回答 1

0

设置会话 cookie 时,它​​使用当前域。但是您可以配置此 cookie 应该允许通配符域“*.example.com”。这样会话将在任一 url 上继续。请注意,通配符域 cookie 有点不安全,因为它们将被发送到“example.com”的任何子域 - 甚至是您在其他服务器上创建的那些子域。这可能不是问题,但应该提及。

但真正的解决方法应该是只使用一个指定的域。使用永久重定向代码将用户重定向到这一域。这也规避了搜索引擎的重复内容问题(这不是惩罚,而是“两个 URL 中的哪个应该显示为搜索结果?”的问题)。

于 2013-08-29T18:39:37.207 回答