mysite.com和www.example.com之间没有维护会话

时间:2010-10-20 05:47:38

标签: php session-variables

我正在使用会话在我的网站上的不同页面之间维护一些变量。当我从www.example.com/a移至www.example.com/b时工作正常,如果我从example.com/a迁移到www.example.com/b,会​​话变量就会丢失

我知道如何确保会话得到维护而不管www或没有www?

该网站在导航到不同页面时附加了一个www,但这些页面也可以在没有这个页面的情况下访问。因此,如果某人手动键入地址并省略该部分,然后导航到页面b(通过单击链接或提交表单),则会话变量将丢失。

3 个答案:

答案 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]

从这里采取http://www.webconfs.com/how-to-redirect-a-webpage.php

答案 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参数