73

我已经对该问题进行了网络搜索,但对结果完全失望。案例是将所有对 domain.com 的请求重定向到子域 www.domain.com。

所以我有什么:

  1. www.domain.com - 主网站域,所有客户端请求都应重定向到此处
  2. domain.com - 另一个不使用 www 前缀的人的网站入口点,所有请求都应重定向到 www.domain.com
  3. mydomain.com - 替代网站别名,所有请求都应重定向到 www.domain.com
  4. www.mydomain.com - 对于使用 www 前缀的人,所有请求都应重定向到 www.domain.com

我知道使用 .htaccess 和 PHP 可以做到这一点。但我想弄清楚如何仅使用 DNS 来完成。我也知道 DNS 查询的结果不会改变 HTTP 层中发生的情况,因此最初输入的域名将始终是发送到主机中的 Web 服务器的域名。因此,要将 domain.com 重写为 www.domain.com,我仍然需要 Apache mod_rewrite。但我想用 DNS(CNAME 和 A 记录)做主要工作。

所以主要的问题是上面的每个域应该有什么 CNAME 和 A 记录?

4

1 回答 1

72

您可以将 www.domain.com 设为 A 记录,并将 www.domain.com 的所有其他域名 CNAME。但这只能“解决”如果 www.domain.com 的 IP 地址发生更改,您不必更改其他 DNS 实体,因为它们是别名。

因此,在 DNS 级别上,无法强制执行重定向。并且有一个很好的理由,因为 DNS 不仅仅用于 HTTP。例如,如果对 domain.com 的所有请求都将重定向到 www.domain.com,您的电子邮件地址将更改为 user@www.domain.com。

因此,对于 HTTP 重定向,您将不得不使用 HTTP 解决方案。这可以在网络服务器级别(mod_rewrite、代码、javascript(呃)等),但您也可以在网络服务器前面有一个代理来处理这个问题。

于 2013-03-02T08:28:06.190 回答