首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过DNS记录路由/重定向*.foo.org→*.foo.biz?

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

Stack Overflow用户
提问于 2013-09-10 17:49:06
回答 2查看 401关注 0票数 1

我注册了我的域名foo.org,同时他们还免费给了我foo.biz。我不喜欢,但就像我说的,他们免费给我的.我想将所有涉及foo.biz的请求路由到foo.com,包括子域。

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

对于foo.biz的DNS配置,我考虑使用301重定向,但它们对通配符子域不太好,或者至少我不知道如何实现我想要的自动映射,即不需要对每个子域手动执行,也不需要在没有通配符的情况下使用。

由于我真的想让foo.org成为规范名称,并将foo.biz作为一个廉价的别名,因此诉诸CNAME记录是有意义的,但我如何才能这样做才能实现映射呢??

我很感激你最有教养的建议!

EN

回答 2

Stack Overflow用户

发布于 2013-09-16 12:32:38

您不能简单地使用DNS就可以做到这一点。当然,您可以为*.foo.bizfoo.org设置CNAME记录,但这不会使浏览器在浏览器的地址栏中输入foo.biz时请求foo.org。您必须在HTTP服务器级别上使用重定向来实现这一点。

为什么?

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

代码语言:javascript
复制
~# 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发送以下请求:

代码语言:javascript
复制
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上的服务器响应我的请求

代码语言:javascript
复制
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来说,它可能如下所示:

代码语言:javascript
复制
<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站点的站点配置。

希望能帮上忙..。

票数 2
EN

Stack Overflow用户

发布于 2017-11-25 12:41:26

添加一个A记录来将站点X重定向到站点Y,如果您想要的只是将foo.biz重定向到foo.org,那么就可以做到这一点。但是,如果您想要的是将foo.biz的所有别名重定向到foo.org,那么它可能是可能的,也可能是不可能的,这取决于您的注册。您可以尝试通过向CNAME记录添加通配符来做到这一点。如果您的注册员不允许这样做,您可能必须为每个别名添加一个CNAME记录。例如,由于许多人使用前缀www,因此向其添加CNAME记录是非常常见的。取决于您的登记员,应该是这样的:

代码语言:javascript
复制
  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记录上接受通配符:

代码语言:javascript
复制
  Type          Name                 Value

   A           foo.biz       (points to) 123.456.789.0

 CNAME            *          (is an alias of) foo.org
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18725669

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档