如何通过DNS记录路由/重定向* .foo.org→* .foo.biz?

时间:2013-09-10 17:49:07

标签: redirect dns cname wildcard-subdomain

我注册了我的域名 foo.org ,随之而来的是他们免费给了我 foo.biz 。我真的不喜欢它,但正如我所说,他们是免费赠送给我的......我想绝对将涉及 foo.biz 的所有请求发送到 foo.com < / strong>,包括子域名。

foo.org 的DNS配置中,我设置了 @ www ,以及通配符子域 * A 记录到我的主机的IP地址

对于 foo.biz 的DNS配置,我考虑使用301重定向,但它们不能很好地使用通配符子域,或者至少我不知道如何实现自动映射我想要,即不必为每个子域手动完成,不使用通配符。

由于我真的想将 foo.org 作为规范名称,并且 foo.biz 就像一个便宜的别名一样,因此使用CNAME记录是有意义的,但是我怎么能这样做才能实现映射?

我很感激你最受过教育的建议!

2 个答案:

答案 0 :(得分:2)

您无法通过简单地使用DNS来实现此目的。当然,您可以为 * .foo.biz 设置 foo.org 的CNAME记录,但这不会使浏览器请求 foo.org 用户在浏览器的地址栏中键入 foo.biz 。您必须在HTTP服务器级别使用重定向才能实现此目的。

为什么?

为了清楚明了,让我们来看看stackoverflow.com的DNS设置:

~# dig www.stackoverflow.com
;; QUESTION SECTION:
;www.stackoverflow.com.         IN     A

;; ANSWER SECTION:
www.stackoverflow.com.   300    IN     CNAME   stackoverflow.com
stackoverflow.com.       24     IN     A       192.252.206.16

正如我们所看到的,stackoverflow.com是www.stackoverflow.com的规范名称。但是,如果我在浏览器的地址栏中键入 www.stackoverflow.com ,它会将以下请求发送到192.252.206.16:

GET / HTTP/1.1
Host: www.stackoverflow.com
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.66 Safari/537.36
Accept-Encoding: gzip,deflate,sdch
Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4

有趣的是,Chrome可能已经看过StackOverflow的DNS配置,可能已经看到 stackoverflow.com 是该服务器的规范名称,但它仍然发送了 www.stackoverflow.com <{1}}标题字段中的。这允许管理员在一台物理计算机(name-based virtual hosting)上托管多个站点。

但是,192.252.206.16处的服务器使用

响应我的请求
Host

因此将我重定向到stackoverflow.com。

HTTP服务器配置

为了实现映射,您需要在HTTP服务器配置中添加一些重写规则。对于Apache,这可能是这样的:

HTTP/1.1 301 Moved Permanently
Content-Type: text/html; charset=UTF-8
Location: http://stackoverflow.com/
Date: Mon, 16 Sep 2013 11:00:43 GMT
Content-Length: 148

<head><title>Document Moved</title></head>
<body><h1>Object Moved</h1>This document may be found <a HREF="http://stackoverflow.com/">here</a></body>

这会将 foo.biz/bar 重写为 foo.org/bar anything.foo.biz/something 重写为 anything.foo.org/something 即可。但是,您仍然需要foo.biz的DNS条目和foo.org站点的站点配置。

希望有帮助...

答案 1 :(得分:0)

添加 A 记录以将网站X重定向到网站Y应该可以解决这个问题,如果你想要的只是从 foo.biz 重定向到 foo.org 即可。但是,如果您想要将 foo.biz 的所有别名重定向到 foo.org ,则可能会或可能不会取决于您的注册商。您可以尝试通过向 CNAME 记录添加通配符来实现此目的。如果您的注册商不允许,您可能需要为每个别名添加 CNAME 记录。例如,由于很多人使用前缀 www ,因此向其添加 CNAME 记录是很常见的。根据您的注册商,它应该是这样的:

  Type          Name                 Value

   A           foo.biz       (points to) 123.456.789.0

 CNAME          www          (is an alias of) foo.org

 CNAME          etc          (is an alias of) foo.org

如果注册商在 CNAME 记录中接受通配符:

  Type          Name                 Value

   A           foo.biz       (points to) 123.456.789.0

 CNAME            *          (is an alias of) foo.org