我注册了我的域名foo.org,同时他们还免费给了我foo.biz。我不喜欢,但就像我说的,他们免费给我的.我想将所有涉及foo.biz的请求路由到foo.com,包括子域。
在foo.org的DNS配置中,我将@和www以及通配符子域*设置为AE 217记录到主机的IP地址,
对于foo.biz的DNS配置,我考虑使用301重定向,但它们对通配符子域不太好,或者至少我不知道如何实现我想要的自动映射,即不需要对每个子域手动执行,也不需要在没有通配符的情况下使用。
由于我真的想让foo.org成为规范名称,并将foo.biz作为一个廉价的别名,因此诉诸CNAME记录是有意义的,但我如何才能这样做才能实现映射呢??
我很感激你最有教养的建议!
发布于 2013-09-16 12:32:38
您不能简单地使用DNS就可以做到这一点。当然,您可以为*.foo.biz到foo.org设置CNAME记录,但这不会使浏览器在浏览器的地址栏中输入foo.biz时请求foo.org。您必须在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是服务器的规范名称,但它仍然在Host头字段中发送www.stackoverflow.com。这允许管理员在一台物理机器(基于名称的虚拟主机)上托管多个站点。
但是,在192.252.206.16上的服务器响应我的请求
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>因此,将我重定向到stackoverflow.com。
HTTP服务器配置
为了实现映射,需要在HTTP服务器配置中添加一些重写规则。对于Apache来说,它可能如下所示:
<VirtualHost *:80>
ServerName foo.biz
ServerAlias *.foo.biz
RewriteEngine On
RewriteCond %{HTTP_HOST} =foo.biz
RewriteRule ^(.*)$ http://foo.org$1 [L,R=301]
RewriteCond %{HTTP_HOST} ^(.*).foo.biz$
RewriteRule ^(.*)$ http://%1.foo.org$1 [L,R=301]
</VirtualHost>这将将anything.foo.biz/something foo.biz/bar重写为foo.org/bar,并将改写为anything.foo.org/something.不过,您仍然需要foo.biz的DNS条目和foo.org站点的站点配置。
希望能帮上忙..。
发布于 2017-11-25 12:41:26
添加一个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.orghttps://stackoverflow.com/questions/18725669
复制相似问题