当www前缀为url时,会话中断


Sessions break when www prefixed to url

如何使用$_SESSION变量解决此问题?

当我在http://www.example.com上时,会话变量存在,并运行以下代码:

echo 'Printing session variables: <br><br><pre>';
foreach ($_SESSION as $key=>$val)
echo $key. ": ".$val. "<br>";
echo '</pre>';

但是,如果我在http://example.com上,则没有会话变量。

无论是否以www.为前缀,我如何使$_SESSION工作相同?

我希望站点默认为http://example.com,而不是http://www.example.com

简单的答案是在.htaccess文件中添加一行,以强制URL使用www.或不使用www.

根据The Guest的评论,我找到了使用.htaccess文件重写URI的正确解决方案,以便将www前缀重写为非www形式,这与这里的最高评级答案略有不同:

RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} ^www.example'.com
RewriteRule ^(.*)$ http://example.com/$1 [R=permanent,L]

原始答案默认为www.example.com URI形式;上述变体将所有内容默认为non-wwwURI形式。