我注册了我的域名 foo.org ,随之而来的是他们免费给了我 foo.biz 。我真的不喜欢它,但正如我所说,他们是免费赠送给我的......我想绝对将涉及 foo.biz 的所有请求发送到 foo.com < / strong>,包括子域名。
在 foo.org 的DNS配置中,我设置了 @ 和 www ,以及通配符子域 * A 记录到我的主机的IP地址
对于 foo.biz 的DNS配置,我考虑使用301重定向,但它们不能很好地使用通配符子域,或者至少我不知道如何实现自动映射我想要,即不必为每个子域手动完成,不使用通配符。
由于我真的想将 foo.org 作为规范名称,并且 foo.biz 就像一个便宜的别名一样,因此使用CNAME记录是有意义的,但是我怎么能这样做才能实现映射?
我很感激你最受过教育的建议!
答案 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服务器配置中添加一些重写规则。对于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