1

我正在使用会话变量来存储登录数据。在本地,一切都很顺利,它可以很好地登录并且不会在页面之间注销。

但是当我将相同的文件放在服务器上时,由于某种原因我被注销了。我已经找到了这篇文章,并尝试使用以下代码来防止动态页面的缓存:

header("Cache-Control: no-cache, must-revalidate"); 
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past

虽然这似乎不起作用。这个问题还有其他可能的解决方案吗?

编辑:请注意,这session_start()是在每一页上。

编辑 2:我做了一些进一步的调查,我的一些链接似乎链接www.mysite.commysite.com. 转到这个新页面会使$_SESSION[]变量未设置,当使用后退按钮返回上一页时,您可以看到$_SESSION[]仍然设置。

4

1 回答 1

3

会话使用 cookie,因此当您更改域(www.site.com 到 site.com)时,这些 cookie 不会被传输。

将您的网络服务器设置为拥有一个规范的 url,并将每个人重定向到那个(例如,在 site.com 上标准化,将 www.site.com 重定向到 site.com)。

这就是我在 apache 中处理重定向的方式:

ServerAlias www.site.com my.site.com site.net www.site.net sites.com www.sites.com site.com
RewriteEngine On
RewriteCond %{SERVER_NAME} !=site.com
RewriteRule ^(.*) https://site.com/$1 [R=301]

我更喜欢 site.com 而不是 www.site.com,除非你对他们两个做不同的事情,让人们输入额外的四个字符似乎毫无价值。我对 SEO 的(蹩脚的)理解是,你最好选择一个而不是在两个 url(site.com/stuff 和 www.site.com/stuff)上有重复的内容

于 2013-05-18T14:21:28.583 回答