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

Redirect 如何路由/重定向*.foo.org→;*。通过DNS记录的foo.biz?,redirect,dns,cname,wildcard-subdomain,Redirect,Dns,Cname,Wildcard Subdomain,我注册了我的域名foo.org,他们还免费为我提供了foo.biz。我真的不喜欢它,但正如我说的,他们免费给了我。。。我想将涉及foo.biz的所有请求绝对路由到foo.com,包括子域 在foo.org的DNS配置中,我将@和www以及通配符子域*设置为A记录到主机的IP地址 对于foo.biz的DNS配置,我曾考虑使用301重定向,但它们不能很好地处理通配符子域,或者至少我不知道如何实现我想要的自动映射,也就是说,不必为每个子域手动进行映射,也不必在没有通配符的情况下使用 既然我真的想让fo

我注册了我的域名foo.org,他们还免费为我提供了foo.biz。我真的不喜欢它,但正如我说的,他们免费给了我。。。我想将涉及foo.biz的所有请求绝对路由到foo.com,包括子域

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

对于foo.biz的DNS配置,我曾考虑使用301重定向,但它们不能很好地处理通配符子域,或者至少我不知道如何实现我想要的自动映射,也就是说,不必为每个子域手动进行映射,也不必在没有通配符的情况下使用

既然我真的想让foo.org成为一个规范的名称,并将foo.biz作为一个廉价的别名,那么求助于CNAME记录是有意义的,但我如何才能做到这一点以实现映射


我很感激你最有教育意义的建议

简单地使用DNS是无法做到这一点的。当然你可以为*.foo.biz设置一个CNAME记录到foo.org,但是当用户在浏览器的地址栏中键入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是该服务器的规范名称,但它仍然在
主机
标题字段中发送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>
HTTP/1.1 301永久移动
内容类型:text/html;字符集=UTF-8
地点:http://stackoverflow.com/
日期:2013年9月16日星期一格林尼治标准时间11:00:43
内容长度:148
文件移动
对象已移动可以找到此文档
从而将我重定向到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>
  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

ServerName foo.biz
ServerAlias*.foo.biz
重新启动发动机
RewriteCond%{HTTP_HOST}=foo.biz
重写规则^(.*)$http://foo.org$1[L,R=301]
重写cond%{HTTP_HOST}^(.*).foo.biz$
重写规则^(.*)$http://%1.foo.org$1[L,R=301]
这将重写foo.biz/barfoo.org/baranything.foo.biz/somethinganything.foo.org/something。不过,您仍然需要foo.biz的DNS条目和foo.org站点的站点配置


希望这有帮助…

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

<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>
  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

谢谢,我会接受这个答案,以示抗议,因为我现在在IIS上,我的幻想破灭了,现在我必须进行URL重写,当与旧的ASP.NET应用程序和其他具有“漂亮”URL模块的环境一起使用时,URL重写会很快变得一团糟…@khovanskiªn也许这会有所帮助:听起来你可以(很容易)将上述规则导入IIS。。。