#1 楼
之所以需要www
或其他子域的原因之一,与DNS和CNAME记录的怪癖有关。在此示例中,假设您正在运行一个大型站点并外包托管到Akamai等CDN(内容分发网络)。通常,您要做的是将您的站点的DNS记录设置为CNAME到某个
akamai.com
地址。这使CDN有机会提供一个接近浏览器的IP地址(以地理或网络术语)。如果您在网站上使用了A记录,那么您将无法提供这种灵活性。DNS的怪癖是,如果您拥有主机名的CNAME记录,则不能同一主机的任何其他记录。但是,您的顶级域
example.com
通常必须具有NS和SOA记录。因此,您也无法添加example.com
的CNAME记录。使用
www.example.com
可以使您有机会使用指向CDN的www
的CNAME,同时在example.com
上保留所需的NS和SOA记录。 example.com
记录通常还会有一个A记录,指向一个主机,该主机将使用HTTP重定向重定向到www.example.com
。评论
您可以提供指向CDN的“默认” CNAME记录,而不必使用“ www”。这样,您的DNS服务器就可以为同一域名拥有SOA,NS,CNAME等所有RR。
–克里斯S
10-10-28在1:19
在这种主题下,为什么没人提到ALIAS(或ANAME记录)?它是否达到了与裸域上的CNAME相同的结果(除了cookie问题...)?
–奥古斯丁·里丁格(Augustin Riedinger)
2014-2-27在10:44
@AugustinRiedinger:ANAME记录不是标准的DNS RR类型。它们是特定服务提供商专有的。
– Greg Hewgill
2014年2月27日在16:57
但这会产生任何兼容性问题吗?有什么理由我们不应该使用它们(除了不是标准的而是专有的)?
–奥古斯丁·里丁格(Augustin Riedinger)
2014-2-27在20:21
@AugustinRiedinger在大多数DNS服务器上不支持。但是,如果您的提供商具有支持这些功能的DNS服务器,那么客户端应该不会出现任何问题。
–科恩。
2014年7月18日在16:02
#2 楼
注意:自2011年RFC 6265的批准和实施以来(所有当前的浏览器(可能是MSIE 11除外),请参见注释),以下内容不再准确,因为默认情况下,从不跨子域设置cookie。从历史上看,使
www.example.com
规范化的一个很好的技术原因是主域的cookie(即example.com
)被发送到了所有子域。 现在,这通常很有意义,但是如果您只想下载静态资源,那是非常有害的,因为这只会浪费带宽。考虑您网站上的所有样式表和图像:通常,在请求图像资源时没有必要将Cookie发送到服务器。
因此,一个好的解决方案是将子域用于静态资源,例如作为
static.example.com
,以通过不发送cookie来节省带宽。可以从此处下载所有图像和其他静态下载。如果现在将www.example.com
用作动态内容,则意味着cookie只需发送到www.example.com
即可,而不必发送到static.example.com
。所有子域,包括example.com
。现在这与大多数网站无关,但是以后更改规范网址不是一个好主意,因此,一旦您选择
static.example.com
而不是example.com
,就可以了一种替代方法是对静态资源使用完全不同的URL。例如,Stack Overflow使用
www.*
,YouTube使用sstatic.net
等。…评论
顺便说一句,我真的不喜欢www.x作为规范的URL,所以就我个人而言,如果要设计一个大型网站,我可能会使用其他URL作为静态资源。
–康拉德·鲁道夫(Konrad Rudolph)
2010年5月27日晚上8:19
@RobinWinslow但是在domain = example.com上设置cookes会在apex域和子域上设置cookie,而避免这种情况的一种方法是不将apex域用于HTTP。虽然,同意,另一种方法是在设置cookie时根本不指定域。我不知道自从我写了答案(早于相关的RFC 6265!)以来,情况是否有所改变,但现在我不愿意再查找它。
–康拉德·鲁道夫(Konrad Rudolph)
18年7月11日在14:15
看来我所描述的行为至少是在2011年编写RFC 6265以来的情况(更多是对当前浏览器行为的总结,而不是对它们应如何工作的陈述)。现在,我们可以假设所有浏览器都将遵循它。请参阅stackoverflow.com/questions/1062963/…和bayou.io/draft/cookie.domain.html。鉴于此,我认为您的答案至少在7年内一直具有误导性,尽管在撰写本文时某些情况下它可能是准确的。您能否更新它以澄清这一事实?
–罗宾·温斯洛(Robin Winslow)
18年7月11日在14:58
@RobinWinslow是的,会的。
–康拉德·鲁道夫(Konrad Rudolph)
18年7月11日在15:36
IE11有害的更多证据:developer.microsoft.com/en-us/microsoft-edge/platform/issues/…
–罗宾·温斯洛(Robin Winslow)
18年7月11日在15:50
#3 楼
www
是一个子域,通常与一个域一起用于域中的Web服务器,并用于其他目的,例如mail
等。如今,该子域范式已不再需要;如果使用浏览器连接到网站,则可以访问该网站,或者将邮件发送到服务器将使用其邮件服务。是否使用
www
是个人喜好问题。可以在http://no-www.org/和http://www.yes-www.org/上找到反对的观点-但是,我相信www
是不必要的,只会给URI添加更多内容。 br /> 大多数服务器以相同的方式发送相同的站点,但不重定向。出于SEO的目的,选择一个,然后让另一个重定向到它。例如,一些PHP代码可以执行此操作:
if (preg_match('/www/', $_SERVER['SERVER_NAME'])) {
header("Location: http://azabani.com{$_SERVER['REQUEST_URI']}");
exit;
}
但是,促进使用其他应答者创建的
www
子域的某些原因也很重要,例如不发送Cookie到静态服务器(信用Konrad Rudolph)。评论
看起来no-www.org已恢复为待售停放页面,其中yes-www.org仍然很受欢迎。我想这解决了。从现在开始大家使用“ www”。
–努雅
18年1月5日在1:07
#4 楼
如果您打算将子网域用于其他目的(例如,博客),则可能要区分站点,并为常规站点添加一个www
前缀。除此之外,唯一重要的事情就是从两者中选择一个并坚持下去(出于SEO的原因)。评论
我目前找不到参考,但它也可能对同一原产地政策产生影响。
–科比
2010年5月27日在8:09
是的,很不幸。如果没有JSONP之类的内容,则无法从example.com AJAX访问www.example.com,反之亦然。
– Delan Azabani
2010年5月27日晚上8:12
#5 楼
这是很历史的。曾几何时,我们曾经拥有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-namehttps://stackoverflow.com/questions/1884157/to-www-or-not-to-www
#6 楼
我先做www
约定来自HTTP的早期,其中www.cmu.edu和cmu.edu很可能是不同的机器。评论
在“早期”,您很少会看到某个域的A记录-也许会有MX记录,但是您在那里很少有主机。
–乔H.
2010年5月27日在12:27
#7 楼
这是另一个次要观点。由于没有www,因此无论是印刷媒体还是在线媒体,基于文本的媒体都存在一个较小的缺点,那就是它将其识别为网址。在印刷品中,example.com通常是一个网址,您可以添加样式修饰来突出显示该网址。但是在线纯文本?没那么容易。如果您发送纯文本消息(包括电子邮件,tweet,Facebook帖子,SMS或其他内容),则可能会识别以http://或www开头的URL。但如果没有一个都不认识。因此,为了使URL成为可点击的链接,您必须输入www。或前面的http://,以及两者中的www。较短,外观笨拙且易于阅读。
评论
http://example.com/完全合格,而www.example.com不合格。我喜欢完全限定的方法,因为无论它是https://example.uk/还是https://blog.example.eu/或其他任何形式,它始终可以识别为URL。它与将安全站点的协议指定为HTTPS一致; www.example.com只是一个域,没有说明应使用哪种协议来访问它。
–詹姆斯·海格(James Haigh)
2015年3月17日,1:11
评论
相关:stackoverflow.com/questions/1109356/…相反,没有什么意义。为了使cookie和子域在成功的Web站点上正常运行,将几个过程分开是很有帮助的。
这个答案虽然没有直接关系,但似乎很相关。