在 URL 中包含“www”有什么意义?

Qui*_*Par 252 http url redirect

除了历史原因,是否有理由在 URL 中包含“www”?

我应该从www.xyz.comtoxyz.com还是 from xyz.comto创建永久重定向www.xyz.com?你会推荐哪一个,为什么?

Gre*_*ill 211

您需要www或其他一些子域的原因之一与 DNS 和 CNAME 记录的怪癖有关。

假设出于本示例的目的,您正在运行一个大型站点并将托管外包给 CDN(内容分发网络),例如 Akamai。您通常所做的是将站点的 DNS 记录设置为某个akamai.com地址的 CNAME 。这使 CDN 有机会提供靠近浏览器的 IP 地址(在地理或网络方面)。如果您在站点上使用 A 记录,那么您将无法提供这种灵活性。

DNS 的奇怪之处在于,如果您有一个主机名的 CNAME 记录,则您不能有该主机名的任何其他记录。但是,您的顶级域example.com通常必须具有 NS 和 SOA 记录。因此,您不能同时添加 CNAME 记录example.com

的使用www.example.com使您有机会使用www指向 CDN的 CNAME ,同时将所需的 NS 和 SOA 记录保留在example.com. 该example.com记录通常还会有一个 A 记录指向将www.example.com使用 HTTP 重定向重定向到的主机。

  • 您可以提供指向 CDN 的“默认”CNAME 记录,而不必使用“www”。这允许您的 DNS 服务器具有相同域名的 SOA、NS、CNAME 等 RR。 (5认同)
  • 为什么没有人在这种主题中提到“ALIAS”(或“ANAME”记录)?它不是在裸域上实现与 CNAME 相同的结果(除了 cookie 问题......)? (3认同)
  • @AugustinRiedinger:ANAME 记录不是标准的 DNS RR 类型。它们是特定服务提供商专有的。 (3认同)
  • @AugustinRiedinger 大多数 DNS **服务器** 不支持它。但是如果您的 **provider** 有一个支持这些功能的 DNS 服务器,那么客户端应该不会有任何问题。 (2认同)

Kon*_*lph 104

注意:截至2011 年RFC 6265的批准和实施(所有当前浏览器,可能除了MSIE 11,请参阅评论)以下内容不再准确,因为默认情况下不会跨子域设置 cookie。

从历史上看,使www.example.com规范化的一个很好的技术原因是主域(即example.com)的cookie被发送到所有子域。

因此,如果您的站点使用 cookie,它们将被发送到其所有子域。

现在,这通常是有道理的,但如果您只想下载静态资源,这将是有害的,因为它只会浪费带宽。考虑您网站上的所有样式表和图像:通常,在请求图像资源时没有理由向服务器发送 cookie。

因此,一个好的解决方案是为静态资源(例如 )使用子域static.example.com,以通过不发送 cookie 来节省带宽。所有图像和其他静态下载都可以从那里下载。如果您现在使用www.example.com动态内容,这意味着 cookie 只需发送到www.example.com,而不是发送到static.example.com

但是,如果example.com是您的主站点,则 cookie 将发送到所有子域,包括static.example.com.

现在这与大多数网站无关,但稍后更改您的规范 URL 并不是一个好主意,因此一旦您选择了example.com代替www.*,您基本上就会坚持使用它。

另一种方法是对静态资源使用完全不同的URL。例如 Stack Overflow 使用sstatic.net、YouTube 使用ytimg.com等……

  • 顺便说一下,我真的不喜欢将 `www.x` 作为规范 URL,所以如果我要设计一个大型站点,我个人可能会为静态资源使用不同的 URL。 (11认同)
  • 至少从 2011 年编写 RFC 6265 开始,我描述的行为似乎就是这种情况(更多是作为当前浏览器行为的总结,而不是它们应该如何工作的声明)。到目前为止,我们可以假设所有浏览器都将遵循它。请参阅 /sf/ask/74407441/ 和 http://bayou.io/draft/cookie.domain.html。鉴于此,我认为您的回答已经误导了至少 7 年,尽管在撰写本文时在某些情况下它*可能*是准确的。您能否更新它以澄清这一事实? (3认同)
  • @RobinWinslow 是的,可以。 (3认同)
  • 更多证据表明 IE11 做了坏事:https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/8183708/#comment-5 (2认同)

Del*_*ani 13

www是一个子域,通常用于域上的 Web 服务器以及用于其他目的的其他域,例如mail等。如今,子域范式已不再需要;如果您在浏览器中连接到某个网站,您将获得该网站,或者向服务器发送邮件将使用其邮件服务。

使用www与否是个人喜好的问题。可以在http://no-www.org/http://www.yes-www.org/上找到相反的观点- 但是,我认为这www是不必要的,只会给 URI 添加更多的麻烦。

大多数服务器以任何一种方式发送相同的站点,但不重定向。出于 SEO 的目的,选择一个,然后让另一个重定向到它。例如,一些 PHP 代码可以做到这一点:

if (preg_match('/www/', $_SERVER['SERVER_NAME'])) {
  header("Location: http://azabani.com{$_SERVER['REQUEST_URI']}");
  exit;
}
Run Code Online (Sandbox Code Playgroud)

但是,促进使用www其他回答者创建的子域的一些原因也很好,例如不向静态服务器发送 cookie(信用Konrad Rudolph)。

  • 看起来 http://no-www.org/ 已恢复为可出售的停放页面,其中 http://www.yes-www.org/ 仍然很强劲。我想这就解决了。从现在开始,每个人都使用“www”。 (3认同)
  • 恐怕现在的情况可能恰恰相反。[no-www.org](https://no-www.org) 很强,[yes-www.org](https://yes-ww.org) 是 504 网关超时。 (2认同)

小智 8

如果您打算将子域用于其他目的(例如博客),您可能需要区分站点并www为常规站点添加前缀。除此之外,唯一重要的是选择两者之一并坚持下去(出于 SEO 的原因)。


小智 8

很有历史感。曾几何时,我们曾经拥有 www.example.com、ftp.example.com、images.example.com、uk.example.com 等,这似乎是一件合乎逻辑的事情,并提供了一种简单的方法来分散负载服务器。

这些天我只会去 example.com 访问主站点并将 www 版本重定向到该站点。

谷歌网站管理员工具允许您指定您的首选域,所以一定要使用这些呢。

另见:
https : //stackoverflow.com/questions/1109356/www-or-not-www-what-to-choose-as-primary-site-name
/sf/ask/131891021/ www-or-not-to-www


msw*_*msw 7

我会做第一个。该www约定来自 HTTP 的早期,当时 www.cmu.edu 和 cmu.edu 很可能是不同的机器。

  • 在“早期”,您很少会看到一个域的 A 记录——也许它有一个 MX 记录,但那里很少有主机。 (10认同)