我正在使用会话在我的网站上的不同页面之间维护一些变量。当我从www.example.com/a移至www.example.com/b时工作正常,如果我从example.com/a迁移到www.example.com/b,会话变量就会丢失
我知道如何确保会话得到维护而不管www或没有www?
该网站在导航到不同页面时附加了一个www,但这些页面也可以在没有这个页面的情况下访问。因此,如果某人手动键入地址并省略该部分,然后导航到页面b(通过单击链接或提交表单),则会话变量将丢失。
答案 0 :(得分:5)
合理的方法是将example.com
重定向到www.example.com
;通过这种方式,您可以确保所有访问者都在www.example.com
,并且抓取工具不会将具有相同内容的两个页面编入索引。
您可以向访问301: Moved Permanently
的用户发送example.com
(假设您使用的是apache,您必须将其添加到.htaccess
):
Redirect 301 http://example.com/ http://www.example.com/
第二版:
Redirect 301 http://example.com/(.*) http://www.example.com/$1
对不起,这个是对的:
Options +FollowSymlinks
RewriteEngine on
rewritecond %{http_host} ^example.com [nc]
rewriterule ^(.*)$ http://www.example.com/$1 [r=301,nc]
答案 1 :(得分:2)
您需要确保使用session_set_cookie_params
将Cookie设置为.example.com而不是www.example.com,特别是参数3 - documentation中的域
答案 2 :(得分:0)
会话ID存储在cookie中。 Cookie不会从子域转移到子域(例如www.somesite.com到somesite.com)。您可以使用session_set_cookie_params()或php.ini
更改Cookie参数