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


238

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

我应该创建从www.xyz.comxyz.com或从xyz.com到的永久重定向www.xyz.com?您会建议哪一个,为什么?



相反,没有什么意义。为了成功实现Web展示时的cookie和子域目的,分离出多个过程会很有帮助。
Fiasco Labs 2013年

这个答案虽然不直接相关,但似乎很相关。
Skippy le Grand Gourou 2015年

Answers:


202

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

出于本示例的目的,假设您正在运行一个大型站点,并将托管外包给Akamai等CDN(内容分发网络)。通常,您要做的是将站点的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重定向重定向到的主机。


3
您可以提供指向CDN的“默认” CNAME记录,而不必使用“ www”。这样,您的DNS服务器就可以为同一域名拥有SOA,NS,CNAME等所有RR。
克里斯·S

1
没人会在这种话题中提及ALIAS(或ANAME记录)呢?它是否达到了与裸域上的CNAME相同的结果(除了cookie问题...)?
Augustin Riedinger 2014年

3
@AugustinRiedinger:ANAME记录不是标准的DNS RR类型。它们是特定服务提供商专有的。
Greg Hewgill

但这会产生任何兼容性问题吗?有什么理由我们不应该使用它们(除了不是标准的而是专有的)?
Augustin Riedinger 2014年

2
@AugustinRiedinger在大多数DNS 服务器上不支持。但是,如果您的提供商具有支持这些功能的DNS服务器,则客户端应该不会出现任何问题。
科恩

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。堆栈溢出(例如,用途sstatic.net,YouTube用途ytimg.com等)…


11
顺便说一句,我真的不喜欢www.x规范的URL,所以如果我要设计一个大型网站,我个人可能会使用其他URL作为静态资源。
康拉德·鲁道夫

1
@RobinWinslow但是,将cookes设置为on domain=example.com会在apex域和子域上设置cookie ,而避免这种情况的一种方法是不对HTTP使用apex域。虽然,同意,另一种方法是domain在设置cookie时根本不指定。我不知道自从我写了答案(早于相关的RFC 6265!)以来,这种情况是否已经改变,但是我现在不愿意查找它。
康拉德·鲁道夫

2
看来我所描述的行为至少是在2011年编写RFC 6265以来的情况(更多是对当前浏览器行为的总结,而不是对它们应如何工作的陈述)。现在,我们可以假设所有浏览器都将遵循它。参见stackoverflow.com/questions/1062963/…bayou.io/draft/cookie.domain.html。鉴于此,我认为您的答案至少在7年内一直具有误导性,尽管在撰写本文时某些情况下它可能是准确的。您能否对其进行更新以澄清这一事实?
罗宾·温斯洛

2
@RobinWinslow是的,会的。
康拉德·鲁道夫'18


12

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;
}

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


2
看起来no-www.org已恢复为待售的停放页面,其中yes-www.org仍然很受欢迎。我想这解决了。从现在开始大家使用“ www”。
nunya

9

这是很历史的。曾几何时,我们曾经拥有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
https://stackoverflow.com/questions/1884157/to- www-or-not-to-www


8

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


1
我目前找不到参考,但它也可能对同一原产地政策产生影响。
科比

是的,很不幸。没有JSONP之类的内容,您就无法www.example.com从AJAX到AJAX,example.com反之亦然。
Delan Azabani 2010年

7

我先做 该www约定来自HTTP的早期时代,其中www.cmu.edu和cmu.edu很可能是不同的机器。


10
在“早期”,您很少会看到某个域的A记录-也许会有MX记录,但是您在那里很少有主机。
Joe H. 2010年

2

这是另一个次要观点。

由于没有www,因此在基于文本的媒体(无论是印刷媒体还是在线媒体)上存在一个较小的缺点,那就是将其识别为网址。在印刷品中,example.com通常是一个网址,您可以添加样式修饰来突出显示该网址。但是在线纯文本?没那么容易。如果您发送纯文本消息(包括电子邮件,tweet,Facebook帖子,SMS或其他内容),则可能会识别以http://或www开头的URL。但如果没有一个都不认出来。因此,为了使URL成为可点击的链接,您必须输入www。或前面的http://,以及两者中的www。更短,更不笨拙且易于阅读。


2
http://example.com/完全合格而www.example.com没有。我更喜欢完全合格的方法,因为它总是识别为URL,无论它是https://example.uk/https://blog.example.eu/或什么的。它与将安全站点的协议指定为HTTPS一致;www.example.com只是一个域,并且没有说明应该使用哪种协议来访问它。
詹姆斯·海格
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.