使用DNSredirect到具有path的另一个URL

我试图通过DNS将域名redirect到另一个域名。

我知道使用IN CNAME是可行的。

www.proof.com IN CNAME www.proof-two.com. 

我需要的是一个pathredirect。 当有人www.proof.com ,应该把他们带到www.proof-two.com/path/index.htm

我知道这可以使用Web服务器设施来完成,但我需要DNSredirect。

这可能吗?

不,你问的是不可能的。 DNS是名称parsing系统,对HTTP一无所知。

如果您使用AWS,则会重新导向

 mail.foo.com --> mail.google.com/a/foo.com 

可以设置如下:

  1. 在S3中,创build一个空的桶“mail.foo.com”
  2. 在“属性” – >“静态网站托pipe”下,将“将所有请求redirect到:mail.google.com/a/foo.com”
  3. 在route53中,创build一个“mail.foo.com”logging
  4. 启用“别名”,并将别名目标设置为“mail.foo.com”存储桶

不是一个纯粹的DNS解决scheme,但它的工作原理;)

但请注意,redirect会跳过所有的URL参数,例如:…?param1 = value1&param2 = value2

我意识到这是一个古老的线程,但FWIW,incase别人正在寻找一种方法来做到这一点。

虽然DNS不理解url的path部分,但它会理解子域,所以不是:

http://www.proof.com在CNAME http://www.proof-two.com/path/index.htm

你可以使用:

http://www.proof.com在CNAME proof.proof-two.com

然后转到您承载proof-two.com的任何位置,并将其设置为proof.proof-two.com到www.proof-two.com/path/index.htm。

〜总有不止一种方式来给猫一个皮肤

要回答原来的问题,不,你想要什么是不可能使用唯一的DNS(像每个人都说过)。 除了已经提到的一切,另一个select是使用URLredirect服务。 这些types的服务可以使您根据需要configuration许多不同types的URLredirect。 例如:

  1. 将域顶点转发到www。 子域,反之亦然
  2. 将域名集合转发到单个目的地(对转发域名拼写错误,旧公司名称等有用)
  3. 将特定域名转发到深度链接的页面(如OP所要的)

这样做的服务是EasyRedir 。 充分披露:我开发了EasyRedir。 当然还有其他的select,所以我鼓励你看看。

编辑

看来,这是我的提供商(OVH)在其基础架构中允许这种redirect。

请参阅: https : //www.ovh.com/fr/g1339.redirection-nom-de-domaine

为了归档,我保留下面的答案,但是没有提供任何有意义的信息。

原始答案

我用TXTlogging做了这个。

要将foo.bar.comredirect到foo2.bar.com/path ,只需在bar.com DNS区域中添加foo IN TXT "1|foo2.bar.com/path"

它也保持了urlpath和参数。 因此,如果您尝试访问foo.bar.com/hello?foo=bar ,您将被redirect到foo2.bar.com/path/hello?foo=bar

DNS不会redirectURL的path部分,所以这是不可能的。

添加

 www.proof.com IN CNAME www.proof-two.com 

将直接访问www.proof.com到www.proof-two.com,在那里你将需要使用Web服务器configuration引导用户到合适的页面。

真的, redirect.center很简单

如果你想创build一个CNAME为:

http://www.proof.com在CNAME http://www.proof-two.com/path/index.htm

使用redirect.center您的CNAME外观作为规范模式:

http://www.proof.com在CNAME http://www.proof-two.com.opts-slash.path.opts-slash.index.htm.redirect.center。;

现在如果你想redirect到https网站,你可以添加这个选项:

http://www.proof.com在CNAME中www.proof-two.com.opts-slash.path.opts-slash.index.htm.opts-https.redirect.center。;

现在,您可以在命运页面中使用带有斜杠的规范模式创buildCNAME。

@contacto联系人和@adlawson

我要在这里拍摄月球,因为我现在面临类似的挑战。 我发现了一个在技术层面上在DNS服务器上实现的解决scheme。

完全披露:我使用www.dnsmadeeasy.com来pipe理我的DNS,您的里程可能会随着GoDaddy或其他香草注册服务商而有所不同。

我的DNS解决scheme:

使用HTTPredirectlogging – 我指向url http://techshiftacademy.com的一个链接,该链接基本注册了一个Python类。;

我会假设你有这种情况:你有一个独特的networking服务器托pipe各种网站,每一个应该是由一个分离的领域呈现:

所以,page1.html应该由http://www.customer1.com等服务。

  1. example.com dns服务器(您的web服务器)内创build一个子域名:

    customer1.example.com

  2. 在您的apache虚拟服务器设置中,将子域映射到包含您的客户#1的网站的目录,如下所示:

<VirtualHost *:80> SetEnv PAGE_ID "customer1" ServerName customer1.example.com ServerAlias www.customer1.com DocumentRoot /your/local/path/webserver/customer1 </VirtualHost>请注意“ServerAlias”的值,重要的是为下一步 –

在这一点上,您应该可以浏览到您的customer1网站:

customer1.example.com

  1. 在customer1.com的DNS设置中,您必须创buildCNAMElogging:

    CNAME = www LOCATION = customer1.example.com

现在,您可以使用:www.customer1.com。

我对这个问题的解决scheme非常简单直接。 所有你需要的是在域内运行的IIS服务器。

在DNS中设置CNAME以指向IIS服务器,使用IIS中的主机名来parsing单个IIS服务器上的多个站点。 我正在使用相同的IIS服务器将一些子域划分到外部站点。

然后在IIS安装程序设置redirect为该网站去您的异地网站/path,在我的情况下,这是我的主机目录,我希望catalog.ourdomain.com去。 从这里所有的调整都是在IIS中完成的。 请确保启用匿名身份validation,以便stream量不会被阻止。

有关工作总结如下:

问题:

http://a.com/p1/p2.html应该去http://B.com/p1/p2.html
今天,但后来configuration手动/自动,相同
http://a.com/p1/p2.html应该去http://C.com/p1/p2.html

回答:

DNS – 将名称转换为IP地址

虽然可以做很多redirect,但总是输出的是IP地址DNS不了解URL的path或协议部分,只能理解域部分,也就是说a.com只转换为IP地址,所以当你点击http: //a.com/p1/p2.html可能会被转换为http://152.132.121.11/p1/p2.html,如果您在DNS中configuration错误,那么您将得到152.132.121.11(不是http:://152.132。; 121.11 / p1 / p2.html ),所以你会得到一些400错误( 400,403等)

redirect – 这是http://a.com/p1/p2.html可以转换为http://b.com/p1/p2.html

像GET,POST等所有方法都可以工作,如果有任何头文件和正文,但是涉及到Web服务器,则可能是故障点,因此可伸缩性和可用性将成为关键

如果您使用的是AWS ,则Route 53 – > API Gateway可以通过自定义域在内部使用Cloud front

Amazonauthenticationpipe理器,AWS网关自定义域和Route53是可能的,请注意ACM上的us-east-1限制

希望能帮助别人

虽然几乎每个人都已经说过了,但仅仅使用DNS是不可能的。 作为一个解决方法,我会build议尝试NGINX( http://nginx.org/en/docs/http/request_processing.html )。

TL; DR – 在NGINX中,您可以创build多个虚拟服务器,根据服务器名称redirect您的请求。

防爆。 http://first.my-server.comredirect到A,而http://second.my-server.comredirect到B,同时共享一个物理服务器。;

大家都已经说过了,我只是想给你另一个select,可以帮助你的服务。 http://www.301redirect.it是一项免费服务,可以将您的网域(通配符)redirect到任何目标url。;

我想添加一个披露:我是这个服务的开发者,还有其他的select。

当然可以用以下技巧redirect:

创build一个新的标准主区域与您要redirect的虚构URL相同的名称确保此虚拟名称与任何AD DNS名称不同创build包含以下条目的logging:

空白…………………..一个……………………. … IP-地址-2

WWW …………………….一个………………….. ….. IP的地址-2

本质上,我们在这里是redirect。 有效的URL将根据现有的DNS主DNS区域进行parsing。 一个虚构的URL将被redirect到ip-addr-2。 重要的是这个条目的名字是空白的,所以它会下降到logging中的下一个条目并且redirect到ip-addr-2