题 在URL中使用“www”有什么意义?


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

我应该从中创建永久重定向 www.xyz.com 至 xyz.com或者来自 xyz.com 至 www.xyz.com?你会建议哪一个?为什么?


223
2018-05-27 08:02




有关: stackoverflow.com/questions/1109356/... - Quintin Par
相反,重点是什么。对于成功的Web存在的cookie和子域目的,分离出几个进程是有帮助的。 - Fiasco Labs
这个答案虽然没有直接关系,但似乎相关。 - Skippy le Grand Gourou


答案:


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

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

DNS的怪癖是,如果你有一个主机名的CNAME记录,你就不能拥有 任何其他 该主机的记录。但是,您的顶级域名 example.com 通常必须有NS和SOA记录。因此,您也无法为其添加CNAME记录 example.com

指某东西的用途 www.example.com 让您有机会使用CNAME www 指向您的CDN,同时保留所需的NS和SOA记录 example.com。该 example.com 记录通常也会有一条A记录指向将重定向到的主机 www.example.com 使用HTTP重定向。


193
2018-05-27 08:10



您可以提供指向CDN的“默认”CNAME记录,您不必使用“www”。这允许您的DNS服务器具有相同域名的SOA,NS,CNAME等RR。 - Chris S
怎么没有人提到这个 ALIAS (要么 ANAME 记录)在这种话题?它是否与裸域上的CNAME获得相同的结果(除了cookie问题...)? - Augustin Riedinger
@AugustinRiedinger:ANAME记录不是标准的DNS RR类型。它们是特定服务提供商的专有权。 - Greg Hewgill
但是这会产生任何兼容性问题吗?有什么理由我们不应该使用它们(除了不是标准但专有)? - Augustin Riedinger
@AugustinRiedinger大多数DNS都不支持它 服务器。但如果你的 提供商 有一个支持这些功能的DNS服务器,不应该给客户端带来任何问题。 - Koen.


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

历史,一个很好的技术理由 www.example.com 规范是主域的cookie(即 example.com)被发送到所有子域。

因此,如果您的网站使用了Cookie,则会将其发送到其所有子域。

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

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

但是,如果 example.com 是您的主要网站,然后将发送cookie 所有 子域名,包括 static.example.com

现在这与大多数网站无关,但稍后更改您的规范网址并不是一个好主意,所以一旦您安顿下来 example.com 代替 www.*,你基本上坚持了它。

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


99
2018-05-27 08:15



顺便说一句,我真的不喜欢 www.x 作为规范网址,如果我要设计一个大型网站,我可能会使用不同的URL作为静态资源。 - Konrad Rudolph
@RobinWinslow但是要设置厨师 domain=example.com 将在顶点域上设置cookie 并在子域名上,避免这种情况的一种方法是不使用HTTP的apex域。虽然,同意,另一种方式是不指定 domain 设置cookie时。我想知道自从我写完答案之后这是否有所改变(早于相关部分 RFC 6265!)但我现在不能费心去查阅它。 - Konrad Rudolph
看起来我描述的行为至少是2011年编写RFC 6265时的情况(更多是当前浏览器行为的摘要,而不是它们应该如何工作的声明)。到目前为止,我们可以假设所有浏览器都会关注它。看到 stackoverflow.com/questions/1062963/... 和 bayou.io/draft/cookie.domain.html。鉴于此,我认为你的答案至少有7年的误导,尽管如此 可能有 在撰写本文时,在某些情况下是准确的。你可以更新它来澄清这个事实吗? - Robin Winslow
@RobinWinslow是的,会的。 - Konrad Rudolph
据@KonradRudolph说道 mxsasha.eu/blog/2014/03/04/definitive-guide-to-cookie-domains,您所描述的不良行为在撰写帖子时可能已经存在于IE11中,并且可能仍然存在 - 这仍然是Internet Explorer的最新版本。这将是非常重要的,值得一提,但最好先检查一下。我不能轻易检查,因为我在Ubuntu,但如果你能,那将是美好的。 - Robin Winslow


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

运用 www 或不是个人喜好的问题。反对的观点可以在 http://no-www.org/ 和 http://www.yes-www.org/  - 但是,我相信 www 是不必要的,只是增加了更多的URI。

大多数服务器以任一方式发送相同的站点,但不重定向。出于搜索引擎优化的目的,选择一个,然后让另一个重定向到它。例如,一些PHP代码执行此操作:

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

但是,推广使用的一些原因 www 其他回答者制作的子域名也很棒,例如不向静态服务器发送cookie(信用卡 康拉德鲁道夫)。


10
2018-05-27 08:11



好像 no-www.org 已经恢复到停售的停放页面 yes-www.org 仍然很强劲。我想这就解决了。从现在开始,每个人都使用“www”。 - hacksalot


如果您要将子域用于其他目的(例如博客),您可能希望区分这些站点并拥有 www 常规网站的前缀。除此之外,唯一重要的是选择其中一个并坚持下去(出于SEO的原因)。


7
2018-05-27 08:06



我目前无法找到参考,但它也可能对同一原产地政策产生影响。 - Kobi
不幸的是,它会的。你不能AJAX www.example.com从 example.com 或者没有像JSONP那样的东西。 - Delan Azabani


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

这些天我只是去为主站点的example.com,并将www版本重定向到。

Google网站管理员工具允许您指定首选域,所以一定要使用它们。

也可以看看:
https://stackoverflow.com/questions/1109356/www-or-not-www-what-to-choose-as-primary-site-name
https://stackoverflow.com/questions/1884157/to-www-or-not-to-www


7
2018-05-27 08:11





我先做第一个。该 www 惯例来自HTTP的早期,其中www.cmu.edu和cmu.edu很可能是不同的机器。


6
2018-05-27 08:08



在'早期'你很少看到一个域的A记录 - 也许它有一个MX记录,但你很少在那里有一个主机。 - Joe H.


这是另一个小角度。

没有www,对于基于文本的媒体,无论是印刷还是在线,都有一个小小的缺点,那就是它被认为是一个网址。在印刷中,通常很明显,example.com是一个网址,你可以添加样式触摸来突出显示。但纯文字在线?不那么容易。如果您发送纯文本消息(无论是电子邮件,推文,Facebook帖子,短信还是其他),它可能会识别以http://或www开头的URL。但是如果没有其中任何一个,就不会认出来。因此,为了使URL成为可点击的链接,您必须要将www放入。或http://在前面,两个,www。更短,更少笨重,更容易阅读。


1
2017-11-24 18:22



http://example.com/ 是完全合格的 www.example.com 不是。我更喜欢完全合格的方法,因为它是 总是 无论是否为URL,都可以识别为URL https://example.uk/ 要么 https://blog.example.eu/ 管他呢。它与将安全站点的协议指定为HTTPS一致; www.example.com 只是一个域,并没有说明应该使用哪个协议来访问它。 - James Haigh