网站通常托管在 www.example.com 和 example.com 上吗?

网站通常托管在 www.example.com 和 example.com 上吗?

我不喜欢同时在 example.com 和www.example.com

但我无法设置 DNS 进行重定向www.example.com到 example.com。所以现在我拥有的是它们都正常工作并提供网页。如果我有:

A     example.com     123.4.5.6
CNAME www.example.com example.com

这难道不应该重定向吗?我意识到使用 JavaScript 可以相当轻松地做到这一点。

我只是不喜欢把我所有的开发/生产重点放在 example.com 上,而www.example.com有些用户可能会访问这些网站,而我又不会密切关注它,因此无法知道它是否存在问题。例如,我无意中硬编码了一些 JavaScript 来查找“http://example.com”。那么,这些内容不会出现在“http://www.example.com”版本的网站上。

这里该怎么做?DNS 能帮我重定向吗?我应该重定向吗www.example.com使用 Javascript 访问 example.com?...但是 JavaScript 不会涵盖 API 调用。

答案1

一般来说,最佳做法是网站仅在一个域名下提供其内容,而任何其他别名仅重定向到该一个规范域名。

但是,重定向是 HTTP 概念,而非 DNS 概念。CNAME记录不会重定向任何内容,它只是使一个名称与 DNS 中的另一个名称解析相同。

正常的做法是让 Web 服务器直接在 HTTP 响应标头中实现重定向(通过 Web 服务器配置,或者由处理请求的应用程序完成(如果适用));通过发送带有标头的 HTTP 状态301(或在某些情况下302Location

至于在浏览器中实现重定向的其他变体,可以使用以下方式提供 HTML元刷新或者甚至可能是 Javascript,正如您所建议的那样。但是,这将带来风险,即某些不太像浏览器的 HTTP 客户端不会遵循重定向。

此外,除非它有目的,否则我建议最好不要让这两个名称实际上指向同一个站点,而是有一个专门用于重定向处理的单独站点,以避免任何混淆。

至于 API 客户端,首先或多或少需要做正确的事情,以避免人们开始使用不同的名称,因为如果他们这样做,您可能无法在不彻底破坏这些客户端的情况下修复它。即,记录应该使用哪个 URL,并且要么在其他名称下根本不提供 API,要么让这些 API 重定向只是为了明确 API 的实际位置。只是不要指望 API 客户端真正遵循重定向,因为它们很可能不会。

相关内容