使用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
可以设置如下:
- 在S3中,创build一个空的桶“mail.foo.com”
- 在“属性” – >“静态网站托pipe”下,将“将所有请求redirect到:mail.google.com/a/foo.com”
- 在route53中,创build一个“mail.foo.com”logging
- 启用“别名”,并将别名目标设置为“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。
〜总有不止一种方式来给猫一个皮肤
你可以使用http://redirect.center/ 。 这很容易:
http://www.proof.com在CNAME http://www.proof-two.com.opts-uri.redirect.center。;
要回答原来的问题,不,你想要什么是不可能使用唯一的DNS(像每个人都说过)。 除了已经提到的一切,另一个select是使用URLredirect服务。 这些types的服务可以使您根据需要configuration许多不同types的URLredirect。 例如:
- 将域顶点转发到www。 子域,反之亦然
- 将域名集合转发到单个目的地(对转发域名拼写错误,旧公司名称等有用)
- 将特定域名转发到深度链接的页面(如OP所要的)
这样做的服务是EasyRedir 。 充分披露:我开发了EasyRedir。 当然还有其他的select,所以我鼓励你看看。
编辑
看来,这是我的提供商(OVH)在其基础架构中允许这种redirect。
请参阅: https : //www.ovh.com/fr/g1339.redirection-nom-de-domaine
为了归档,我保留下面的答案,但是没有提供任何有意义的信息。
原始答案
我用TXTlogging做了这个。
要将foo.bar.com
redirect到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网站,你可以添加这个选项:
现在,您可以在命运页面中使用带有斜杠的规范模式创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等服务。
-
在example.com dns服务器(您的web服务器)内创build一个子域名:
customer1.example.com
-
在您的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
- 在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