【问题标题】:Why is "www.example.com" not the same as "example.com"?为什么“www.example.com”与“example.com”不一样?
【发布时间】:2011-12-25 23:29:52
【问题描述】:

我有一个网站。如果我登录http://example.com这种格式的域,然后将我的地址更改为http://www.example.com,我发现我的帐户没有登录。如果我将地址更改为http://example.com,我发现我的帐户已登录。

我联系了我的房东,他们告诉我这是一个编程问题。

我该如何解决这个问题,让两个地址代表相同的访问/会话/cookies?

我正在使用 PHP 和 MySQL

【问题讨论】:

  • 并且您通过使用斜杠作为域路径来设置对所有域可用的 cookie。见setcookie ("TestCookie", "", time() - 3600, "/", ".example.com", 1);

标签: php web-applications


【解决方案1】:

www.example.comexample.com 就浏览器而言显然是两个不同的域,即使它们都指向同一个站点。如果你在那里停放一个不同的域,例如example.net,也会发生同样的情况。

为了解决这个问题,通过 .htaccess 重写 URL 是相当普遍的。决定您喜欢使用哪个域名,然后在您的 .htaccess 中添加类似这样的内容:

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

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

(第一个删除,第二个添加www)

【讨论】:

  • 如果您决定要切换到 HTTPS,这也可以为您省去麻烦,而且我过去合作过的 SEO 人员提到这有助于避免被搜索引擎指责为“重复内容” .
  • 好吧,使用规范的 URL 可以避免重复内容问题,但您的评论仍然有效,谢谢 :)。
【解决方案2】:

我怎样才能解决这个问题,让两个地址代表相同 访问/会话/cookies?

您必须像这样设置 cookie 的域路径,以使其在所有子域上可用:(www 是子域):

.domain.com

【讨论】:

  • 任何带有 www 前缀的域通常被称为 NAKED DOMAIN
【解决方案3】:

不一样。。 通常您只需将 example.com 写入浏览器即可访问 www.example.com,但您的浏览器会将 www 添加到您的 url 中。 所以基本上是不一样的

【讨论】:

  • 一个准确的评估,但它没有提供任何可操作的信息来帮助解决 OP(我猜这就是这个答案被否决的原因)。
猜你喜欢
  • 2021-02-20
  • 1970-01-01
  • 2018-12-31
  • 1970-01-01
  • 2016-01-16
  • 1970-01-01
  • 1970-01-01
  • 2014-03-04
  • 2013-03-02
相关资源
最近更新 更多