除了历史原因之外,还有其他理由在 URL 中包含“www”吗?
www.xyz.com
我应该创建从到 的永久重定向xyz.com
,还是从xyz.com
到 的永久重定向www.xyz.com
?您会建议使用哪一个?为什么?
答案1
您需要或其他子域名的原因之一www
与 DNS 和 CNAME 记录的怪癖有关。
在本例中,假设您正在运营一个大型网站,并将托管外包给 Akamai 等 CDN(内容分发网络)。您通常会将网站的 DNS 记录设置为某个akamai.com
地址的 CNAME。这使 CDN 有机会提供靠近浏览器的 IP 地址(就地理或网络而言)。如果您在网站上使用 A 记录,那么您将无法提供这种灵活性。
DNS 的怪癖在于,如果你有一个主机名的 CNAME 记录,你就不能任何其他同一主机的记录。但是,您的顶级域名example.com
通常必须具有 NS 和 SOA 记录。因此,您不能同时为 添加 CNAME 记录example.com
。
使用可让您有机会使用指向 CDN 的www.example.com
CNAME ,同时保留 上所需的 NS 和 SOA 记录。该记录通常还会有一个 A 记录,用于指向将使用 HTTP 重定向重定向到 的主机。www
example.com
example.com
www.example.com
答案2
注意:自批准和实施之日起(所有当前浏览器,除可能是 MSIE 11,见评论)的RFC 6265在 2011 年,以下内容不再准确,因为默认情况下不会在子域之间设置 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
等等……
答案3
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(信用康拉德·鲁道夫)。
答案4
这是很有历史意义的。我们曾经使用过 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