正确的处理方式www。和非www。在使用会话时

时间:2014-06-12 23:12:39

标签: php .htaccess session no-www

直到今天才发现两者不是同一个网站,并且是彼此的副本。

我目前遇到的错误是我正常设置登录会话:

$_SESSION['logged'] = 1;

此会话可以收到并可以使用

domain.com

但是当用户导航到任何时候不起作用:

www.domain.com

我应该如何处理?我喜欢使用绝对链接进行导航,例如:

http://www.domain.com/about

但这会导致用户不使用www的问题。一直等等。

有没有办法允许在两个www上设置cookie。和非www或有更好的方法来处理这个?可能是htaccess类型重定向到非www。每次页面?

感谢您的任何见解。克雷格。

1 个答案:

答案 0 :(得分:4)

您不应同时使用example.comwww.example.com。您应该选择一个并重定向另一个。例如,如果您要使用www.example.com,请将example.com重定向到www.example.com。您可以在.htaccess中轻松完成此操作:

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

或者在Nginx中:

server {
    listen       80;
    server_name  example.com;
    return       301 http://www.example.com$request_uri;
}

如果您想将www.example.com重定向到example.com,那么您可以使用此功能:

RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]