如何在多个子域名之间使用会话变量?

4

我一直在点击网站通知邮件中的链接时,会经常丢失我的会话变量。在长时间苦思冥想后,我今天意识到www.domain-name.com不包含会话变量,而domain-name.com则包含!

为什么会发生这种情况?我该怎么做才能解决这个问题(php-apache)?


感谢大家帮我解决问题!这是我添加到我的 .htaccess 文件中的内容,以使 domain.com 被重定向到 www.domain.com`Options +FollowSymlinks RewriteEngine on rewritecond %{http_host} ^domain.com [nc] rewriterule ^(.*)$ http://www.domain.com/$1 [r=301,nc]`再次感谢! :) - sniper
4个回答

3

会话基于cookie,它们是按域名分离的。
www.domain.comdomain.com是不同的域名,因此它们的cookie被分开存储。

标准做法是选择一个变体,并将另一个变体301重定向到首选变体。


哦,现在我明白为什么我一直失去会话了! :) - sniper

2
会话ID存储在cookie中,可以在cookie中指定它对域名的反应方式。
请查看PHP的setcookie文档。
您可以使用以下方法更改PHP的会话cookie配置:
ini_set("session.cookie_domain", ".mydomain.com");

谢谢Nican!只是简单地浏览了一下setcookie文档。会继续阅读!当你说“.mydomain.com”时,它是否包括domain.com的所有子域,包括"http://www.domain.com"和"http://domain.com"? - sniper

1

“www”并没有什么特别的技术含义。域名“domain.com”与“www.domain.com”是不同的;如果您想将它们关联起来,那就需要在某个地方明确指定,通常是在HTTP服务器配置中。




网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接