Php 将用户重定向到www.url-$\u会话问题

Php 将用户重定向到www.url-$\u会话问题,php,url,session,redirect,subdomain,Php,Url,Session,Redirect,Subdomain,问题 我的域名是www.example.com。如果用户登录并关闭选项卡,然后打开它并转到www.example.com,则会话将完全正常,用户已登录 但是,如果他们键入example.com(不带www.),则显示他们已注销,如果我放置print\r($\u SESSION)则不会显示任何内容。但是,单击页面上的任何链接(将用户重定向到www.example.com/link)可恢复其会话 因此,我意识到,当用户在example.com中键入内容时,如果没有后续的www,就会出现注销的情况,这

问题

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

但是,如果他们键入example.com(不带www.),则显示他们已注销,如果我放置
print\r($\u SESSION)
则不会显示任何内容。但是,单击页面上的任何链接(将用户重定向到www.example.com/link)可恢复其会话

因此,我意识到,当用户在example.com中键入内容时,如果没有后续的www,就会出现注销的情况,这是很多用户(像我一样)经常做的事情

问题

我认为有两种方法可以解决这个问题:

  • 找到一种方法使
    $\u会话
    适用于任何url子域(或缺少该子域)
  • 将键入example.com的用户重定向到www.example.com

这两种方法中的任何一种都是可行的,如果可行,哪种是最佳做法?

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


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

从url.com重定向到www.url.com非常容易-您只需要在.htaccess文件中添加几行(假设您运行的是Apache)。非常感谢。我还试图找出这是否是最佳实践,或者简单地让session变量在所有子域上工作是否会更好?对不起,我认为应该有更通晓的人来回答最佳实践问题。:)出于这个原因和其他原因,我建议您在整个站点中选择www或非www。但一旦用户关闭窗口,会话就会过期!谢谢你的回复。对于你的第二个选项(即不使用通配符域进行会话),我唯一能想到的问题是,如果该站点有移动版本,比如说,用户切换到正常版本,他们会被注销吗?会话能否仅限于三个域(
example.com
www.example.com
m.example.com
)?如果需要,可以手动发送三种不同的会话cookie。但我怀疑在普通网站和移动网站之间切换是否会是一种非常普遍的使用模式。这样的事情应该用一个永久的“记住我”标记来解决。