Php 使用会话时正确处理www.和非www.的方法

Php 使用会话时正确处理www.和非www.的方法,php,.htaccess,session,no-www,Php,.htaccess,Session,No Www,直到今天才发现这两个网站不是同一个网站,而是彼此的真实副本 我当前遇到的错误是,我正在以正常方式设置登录会话: $_SESSION['logged'] = 1; 可以接收此会话并在其上工作 domain.com 但当用户导航到以下任何位置时,该选项不起作用: www.domain.com 我该怎么处理?我喜欢使用绝对链接进行导航,例如: http://www.domain.com/about 但这导致了用户不经常使用www等问题 是否有一种方法允许在www.和非www.上设置cookie

直到今天才发现这两个网站不是同一个网站,而是彼此的真实副本

我当前遇到的错误是,我正在以正常方式设置登录会话:

$_SESSION['logged'] = 1;
可以接收此会话并在其上工作

domain.com
但当用户导航到以下任何位置时,该选项不起作用:

www.domain.com
我该怎么处理?我喜欢使用绝对链接进行导航,例如:

http://www.domain.com/about
但这导致了用户不经常使用www等问题

是否有一种方法允许在www.和非www.上设置cookies,或者有更好的方法来处理此问题?可能每次都有一个htaccess类型重定向到非www.page


谢谢你的洞察力。Craig.

你不应该同时使用
example.com
www.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]

你不应该同时使用
example.com
www.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]

你不应该同时使用
example.com
www.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]

你不应该同时使用
example.com
www.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]

完美的一切正常。快速提问,如果我选择的是非www,那么仍然保留http://规则是一种好的做法吗?还是说这不会造成盲目的差异?@user2921557在我的答案中添加了一个例子。有很多方法可以做到这一点,请看这里的答案:完美!一切正常。快速提问,如果我选择的是非www,那么仍然保留http://规则是一种好的做法吗?还是说这不会造成盲目的差异?@user2921557在我的答案中添加了一个例子。有很多方法可以做到这一点,请看这里的答案:完美!一切正常。快速提问,如果我选择的是非www,那么仍然保留http://规则是一种好的做法吗?还是说这不会造成盲目的差异?@user2921557在我的答案中添加了一个例子。有很多方法可以做到这一点,请看这里的答案:完美!一切正常。快速提问,如果我选择的是非www,那么仍然保留http://规则是一种好的做法吗?还是说这不会造成盲目的差异?@user2921557在我的答案中添加了一个例子。有很多方法可以做到这一点,请参见此处的答案: