问题在于:我们将网站托管给外部提供商,他们没有给我们 IP 地址,而是给我们一个域名,我们将 www CNAME 记录指向该域名。我假设他们使用某种类型的虚拟托管,读取请求域名的标头并显示该网站。
无论如何,很多用户抱怨网站瘫痪了,但实际上并非如此,因为他们在浏览器中输入的是 example.com 而不是 www.example.com。
有没有办法让它在我们的 DNS 中发挥作用?
答案1
对根目录进行 CNAME 通常不是一个好主意,因为根目录上的所有其他记录(SOA、NS、MX)都非常重要。
您的提供商确实应该允许您指向地址而不是名称。我很欣赏他们所做的尝试,让他们能够根据需要更灵活地处理该 DNS 条目,但在这种情况下,这样做适得其反。
答案2
好的,这个问题是前段时间问的,并且已经有一个可以接受的答案...
对你的根目录进行 CNAME 通常不是一个好主意,
你不能使用example.com
根域的 CNAME。
用户抱怨网站瘫痪了[..] 因为他们输入的是 example.com 而不是 www.example.com
有一个简单的解决方案:
- 指向
example.com
网络服务器的 IP 地址(A 记录), - 它会发出HTTP 301 重定向到您的
www.example.com
地址。
这个重定向最多可能需要两百毫秒,而且大多数用户都不会注意到它。
您可以自己完成此操作,只需设置一个网络服务器并编写几行 PHP / ASP / 即可。高温加速腐蚀控制等等。请注意,这不一定是您的主要生产网络服务器;任何具有静态 IP 地址的廉价共享网络主机都可以。
另外,许多 DNS 托管提供商都免费提供这项服务。这将是最简单、最可靠的选择;让专门从事此业务的人来托管此重定向。不同的 DNS 托管商往往会用不同的名称来称呼此功能,例如 Gandi 称之为“Web 转发”。
有没有办法让它在我们的 DNS 中发挥作用?
您的意思是,只使用 DNS 而不使用网络服务器?不,没有。
答案3
假设 CNAME 解析到的 IP 不经常更改,并且没有发生任何特别的事情(例如基于地理位置的负载平衡、使用 CDN 等),您可以“作弊”并为 example.com 添加一个 A RR,其中包含 CNAME 解析到的 IP。我会设置自动监控和更改 A 记录,这样如果 IP 确实发生变化,它将自动处理(并且您可能还希望 RR 上的 TTL 较低)。
不幸的是,Alex 的考虑仍然适用:当 Host: 标头是 example.com 而不是 www.example.com 时,您需要配置 Web 服务器以执行正确的操作。
关于 Shane Madden 关于设置另一个 Web 服务器来执行重定向的评论:一些 DNS 提供商提供此服务。例如,DynDNS 有“WebHops”。http://www.dyndns.com/support/kb/webhops_redirections.html您需要为 IP 为 204.13.248.125 的 example.com 创建一条 A 记录,然后创建一个重定向到 www.example.com 的“webhop”。
最后,也许是时候获得一个具有您所需功能的新的网络托管服务了。
答案4
在我提出问题之后,我越想越觉得,您似乎确实拥有该区域的 DNS。问题是,如果他们为 www.example.com 设置了虚拟主机,它将不会响应 example.com。为了使它正常工作,您必须让其他东西响应 example.com,并让网络服务器重定向到 www.example.com。