2010-10-20 51 views
3

我正在使用会话在我的网站上的不同页面之间维护一些变量。虽然当我从www.example.com/a移动到www.example.com/b时,它工作正常,但如果我从example.com/a移动到www.example.com/b,会​​话变量会丢失。mysite.com和www.example.com之间没有维护会话

任何想法如何我可以确保会议保持不考虑www或没有www?

该网站追加一个万维网,因为它导航到不同的页面,但页面也可以访问没有。因此,如果有人手动输入地址并忽略该部分,然后导航到页面b(通过单击链接或提交表单),会话变量将丢失。

回答

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

+0

+1 - 这是更干净的方式来做到这一点,假设www.mysite.com是相同的网站在逻辑上mysite.com – tobyodavies 2010-10-20 06:06:35

+0

谢谢。我会去这个。只有一个问题 - 如果我传递一个带有URL的参数(没有www),重定向会自动将参数传递给www URL吗? – lostInTransit 2010-10-20 06:52:08

+0

不确定,但第二个版本应该。 – 2010-10-20 06:53:34

2

你需要确保该cookie被设置使用session_set_cookie_params不www.example.com改为.example.com的,具体参数3 - 会话ID存储在cookie中documentation

+2

如果他希望会话值在两个域下都可用,将域设置为“.example.com”会更有意义。 – mellowsoon 2010-10-20 07:03:56

+0

是的,这就是我的意思!编辑,谢谢 – tobyodavies 2010-10-20 22:44:43