【问题标题】:Correct way of handling www. and non www. when working with sessions正确的处理方式www。和非 www。使用会话时
【发布时间】:2014-06-12 23:12:38
【问题描述】:

今天才发现这两个不是同一个站点,实际上是互为副本。

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

$_SESSION['logged'] = 1;

可以接收并处理此会话

domain.com

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

www.domain.com

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

http://www.domain.com/about

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

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

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

【问题讨论】:

    标签: php .htaccess session no-www


    【解决方案1】:

    您不应同时使用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]
    

    【讨论】:

    • 完美!按预期工作。快速提问,如果我选择非 www。仍然为规则保留 http:// 是一种好习惯吗?还是没有盲目的区别?
    • @user2921557 在我的答案中添加了一个示例。有很多方法可以做到这一点,请在此处查看答案:stackoverflow.com/questions/234723/…
    猜你喜欢
    • 1970-01-01
    • 2011-05-03
    • 1970-01-01
    • 1970-01-01
    • 2011-12-18
    • 1970-01-01
    • 2018-12-24
    • 2011-07-15
    • 1970-01-01
    相关资源
    最近更新 更多