使用DNS重定向到具有路径的另一个URL [关闭]


121

我正在尝试通过DNS将域重定向到另一个域。

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

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

我需要的是带有路径的重定向。当有人打字时www.proof.com,应该带他们去www.proof-two.com/path/index.htm

我知道可以使用Web服务器功能来完成,但是我需要DNS重定向。

这可能吗?


如果您使用的是Google域,则可以在左侧菜单->网站中使用其“域名转发”。
John_J

Answers:


137

不,您的要求是不可能的。DNS是名称解析系统,对HTTP一无所知。


93

如果您使用AWS,则重定向如下

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

可以如下设置:

  1. 在s3中,创建一个空存储桶“ mail.foo.com”
  2. 在属性->静态网站托管下,设置“将所有请求重定向到:mail.google.com/a/foo.com”
  3. 在route53中,创建一个A记录“ mail.foo.com”
  4. 启用“别名”,并将别名目标设置为“ mail.foo.com”存储桶

不是纯粹的DNS解决方案,但它可以工作;)

但是请注意,重定向会跳过所有URL参数,例如:...?param1 = value1&param2 = value2


3
对于使用AWS的任何人来说,这都是一个很好的实用答案。谢谢!不错的解决方法
Ken

6
重要说明:存储桶的名称必须与重定向到它的主机名匹配。请参阅serverfault.com/a/584714/105720
Jordan Feldstein,2015年

1
这可以重定向到目录,但不能重定向到特定页面。如果您将所有请求重定向到“ www.example.com/foo/bar/baz.html”,则AWS将“有帮助”在URL后面附加“ /”,将其转换为“ www.example.com/foo/bar/baz” .html /”,并返回404错误。
Earl Ruby

34

我意识到这是一个旧线程,但是FWIW,以防其他人正在寻找一种方法来执行此操作。

尽管dns不了解url的路径部分,但它可以了解子域,因此可以代替:

CNAME中的www.proof.com www.proof-two.com/path/index.htm

您可以使用:

www.proof.com IN CNAMEproof.proof-two.com

然后转到您托管proof-two.com的任何地方,并将其设置为将proof.proof-two.com指向www.proof-two.com/path/index.htm。

〜总是有不止一种方式给猫皮


2
这听起来像是一种无用的构造,而不是使proof.proof-two.com指向www.proof-two.com/path/index.htm,您也可以使www.roof.com指向此处,无需额外的DNS记录。
米歇尔

12
@Michiel 如果您可以轻松访问proof-two.comWeb服务器,这听起来像是无用的构造。有时,大公司(和官僚机构)会使事情变得复杂得多。
cregox

1
“然后转到托管凭证two.com的任何地方,并将其设置为将proof.proof-two.com指向www.proof-two.com/path/index.htm”,该怎么做?
user2060451 '19

17

我有一个个人项目,可以帮助您解决此问题。这是一个开源重定向解决方案,可让您仅更改DNS设置即可重定向域。项目链接:https : //redirect.center/

要将www.proof.com重定向到www.proof-two.com并保留URL参数,只需在proof.com上设置www DNS条目:

CNAME中的www.proof.com www.proof-two.com.opts-uri.redirect.center。


问题是关于重定向到完整路径URL,而不仅仅是域。
Tony Chiboucas 2015年

2
那仍然不是一条完整的路
Tony Chiboucas

2
可以通过服务的“ .opts-slash”来支持路径。功能。将Jobs.my-domain.com重定向到my-domain.com/jobs 如下配置DNS区域:主机记录:jobs类型:CNAME到:www.my-domain.com.opts-slash.jobs.redirect.center
大卫·特纳(David Turner)

1
如果您的注册服务商不提供重定向,这真的很酷而且很简单!
卡·斯蒂布

1
太棒了!我以为存在这样的东西,但找不到(我猜他们需要对他们的SEO进行操作)。
马特·道奇

11

使用redirect.center确实很容易

如果要创建一个CNAME为:

CNAME中的www.proof.com www.proof-two.com/path/index.htm

使用redirect.center,您的CNAME看起来像是规范模式:

CNAME中的www.proof.com www.proof-two.com.opts-slash.path.opts-slash.index.htm.redirect.center。

现在,如果您想重定向到https网站,则可以添加以下选项:

CNAME中的www.proof.com www.proof-two.com.opts-slash.path.opts-slash.index.htm.opts-https.redirect.center。

现在,您可以在目的地页面中以标准模式创建带有斜杠的CNAME。


我一直在尝试,但是没有用。它所做的只是将用户重定向到redirect.center的站点。
雷南'18

您可以复制您的CNAME注册吗?您也可以复制重新定义的站点吗?
阿尔瓦罗·阿吉拉尔

1
@Renan确保源域存在于DNS中,并且可以由redirect.center服务器进行查找;也无法在浏览器中导航到target-domain.com.redirect.center。见解释:github.com/udleinati/redirect.center/issues/...
红鱼

11

编辑

似乎是我的提供程序(OVH)允许在其基础结构中进行这种重定向。

参见:https : //docs.ovh.com/gb/en/domains/redirect-domain-name/

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

原始答案

我是用TXT记录来做的。

要重定向foo.bar.comfoo2.bar.com/path,只需添加foo IN TXT "1|foo2.bar.com/path"您的bar.comDNS区域。

它还保留网址路径和参数。因此,如果您尝试访问foo.bar.com/hello?foo=bar,您将被重定向到foo2.bar.com/path/hello?foo=bar


6
您能再充实一点吗?您有关于如何使用TXT记录的参考吗?
乔西亚

这还会保留url参数吗?
andreas

1
经过调查,似乎OVH为我做了。请参阅:ovh.com/fr/g1339.redirection-nom-de-domaine(fr)。我将更新我的答案。
加百利

10

要回答原始问题,不,仅使用DNS不可能实现您想要的一切(就像每个人都说过的那样)。除了已经提到的所有内容之外,另一个选择是使用URL重定向服务。这些类型的服务可以使您根据需要配置许多不同类型的URL重定向。例如:

  1. 将域顶点转发到www。子域,反之亦然
  2. 将一组域名转发到单个目标位置(用于转发域名拼写错误,旧公司名称等)
  3. 将特定域名转发到深层链接的页面(如OP所需的内容)

EasyRedir是实现此目的的服务。全面披露:我开发了EasyRedir。当然,还有其他选择,所以我鼓励您环顾四周。


5

DNS不会重定向URL的路径部分,因此这是不可能的。

新增中

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

将直接访问www.proof.com到www.proof-two.com,在这里您需要使用Web服务器配置将用户定向到适当的页面。


4

我对这个问题的解决方法非常简单直接。您只需要在域内运行的IIS服务器即可。

使用IIS中的主机名在单个IIS服务器上解析多个站点,从而在DNS中设置CNAME指向IIS服务器。我正在使用同一台IIS服务器将一些子域导出到外部站点。

然后,在IIS安装程序中,该站点的设置重定向将转到您的异地站点/路径,在我的情况下,这是我们希望catalog.ourdomain.com进入的托管目录。从这里开始,所有调整都在IIS中完成。确保启用匿名身份验证,以便不会阻止流量。


3

我将假设您遇到这种情况:您有一个托管各种网站的唯一Web服务器,每个网站都应该由一个单独的域呈现:

因此,page1.html应该由www.customer1.com提供,依此类推。

  1. example.com dns服务器(您的网络服务器)内创建一个子域:

    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设置中,您必须创建一个CNAME记录:

    CNAME = www LOCATION = customer1.example.com

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


3

相关工作总结如下:

问题:

今天http://a.com/p1/p2.html 应该转到 http://B.com/p1/p2.html
,但是稍后在手动/自动配置时,该
http://a.com/p1 /p2.html 应该转到 http://C.com/p1/p2.html

答案:

DNS-将名称转换为IP地址

尽管它可以执行很多重定向,但始终输出的是IP地址DNS不理解URL的路径或协议部分,仅理解域部分,即a.com仅转换为IP地址,因此当您单击http时: 如果您在DNS中配置错误,//a.com/p1/p2.html可能会转换为http://152.132.121.11/p1/p2.html,那么您将获得152.132.121.11(而不是http://152.132。 121.11 / p1 / p2.html),因此您会得到一些400s错误(400、403等)

重定向 -这是http://a.com/p1/p2.html,可以转换为http://b.com/p1/p2.html

像GET,POST这样的所有方法都可以使用,并且可以使用任何标头和正文,但是涉及Web服务器,这可能是故障点,因此可伸缩性和可用性将是关键

如果您在AWS上,则可以通过自定义域在内部使用Cloud Front进行Route 53-> API Gateway

可以使用Amazon Certification Manager,AWS Gateway自定义域和Route53,请注意ACM的us-east-1限制

希望对某人有帮助



0

您可以使用htaccess重写mod,如果用户请求一个特定的域而不是其他域,则可以重写到子文件夹。


-1

当然,可以使用以下技巧进行重定向:

创建一个新的标准主区域,使其与您要重定向到的虚拟URL相同。确保此虚拟名称与任何AD DNS名称不同。使用以下条目创建A记录:

空白....................... A ..................................... ... ip-addr-2

www .......................................... A ...................... ..... ip-addr-2

本质上,这里我们是重定向。一个有效的URL将根据现有的DNS主DNS区域进行解析。虚构的URL将被重定向到ip-addr-2。重要的是该条目的名称为空,因此它将落入记录中的下一个条目并重定向到ip-addr-2


-4

每个人都已经说过这一点,我只想给您提供另一种可以帮助您的服务的选择。www.301redirect.it是一项免费服务,可以将您的域(使用通配符)重定向到任何目标URL。

我还想补充一点:我是这项服务的开发人员,还有其他选择。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.