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

时间:2012-02-25 12:39:07

标签: dns redirect

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

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

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

我需要的是一个带路径的重定向。如果有人输入www.proof.com,则应将其转到www.proof-two.com/path/index.htm

我知道可以使用Web Server工具完成,但我需要DNS重定向。

这可能吗?

16 个答案:

答案 0 :(得分:116)

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

答案 1 :(得分:76)

如果您使用AWS,则需要重定向

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

可以设置如下:

  1. 在s3中,创建一个空桶" mail.foo.com"
  2. 属性中的
  3. - >静态网站托管,设置"将所有请求重定向到:mail.google.com/a/foo.com"
  4. 在route53中,创建一个A记录" mail.foo.com"
  5. 启用"别名",并将别名目标设置为" mail.foo.com"桶
  6. 不是纯粹的DNS解决方案,但它有效;)

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

答案 2 :(得分:26)

我意识到这是一个旧线程,但FWIW,因为其他人正在寻找一种方法来做到这一点。

虽然dns不了解网址的路径部分,但它会理解子网域,因此不是:

www.proof.com IN CNAME www.proof-two.com/path/index.htm

您可以使用:

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

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

〜皮肤上总是有不止一种方法

答案 3 :(得分:14)

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

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

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

答案 4 :(得分:10)

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

  1. 将域顶点转发到www。子域名,反之亦然。
  2. 将一组域名转发到一个目的地(用于转发域拼写错误,旧公司名称等)。
  3. 将特定域名转发到深层链接的页面(就像OP想要的那样)
  4. 执行此操作的服务是EasyRedir。完全披露:我开发了EasyRedir。当然还有其他选择,所以我鼓励你去看看。

答案 5 :(得分:9)

redirect.center

真的很容易

如果您想创建CNAME:

www.proof.com IN CNAME www.proof-two.com/path/index.htm

使用redirect.center将您的CNAME看作规范模式:

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

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

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

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

答案 6 :(得分:8)

修改

似乎我的提供商(OVH)在其基础架构中允许这种重定向。

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

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

原始答案

我使用TXT记录做到了。

要将foo.bar.com重定向到foo2.bar.com/path,只需在foo IN TXT "1|foo2.bar.com/path" DNS区域中添加bar.com即可。

它还保留了url路径和参数。因此,如果您尝试访问foo.bar.com/hello?foo=bar,则系统会将您重定向到foo2.bar.com/path/hello?foo=bar

答案 7 :(得分:5)

DNS不会重定向网址的路径部分,因此无法实现。

添加

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

将直接访问www.proof.com,访问www.proof-two.com,您需要使用网络服务器配置将用户引导至相应的页面。

答案 8 :(得分:3)

@contacto contact和@adlawson

我要在这里为月球射击,因为我现在面临着类似的挑战。我找到了一个在技术层面上在DNS服务器上实现的解决方案。

完全披露:我使用www.dnsmadeeasy.com来管理我的DNS,因为您的里程可能因GoDaddy或其他香草注册商而异。

我的DNS解决方案:

使用HTTP重定向记录 - 我将网址http://techshiftacademy.com指向具有Python类基本注册的位链接。

答案 9 :(得分:3)

我对此问题的解决方案非常简单直接。您所需要的只是在域内运行的IIS服务器。

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

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

答案 10 :(得分: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://a.com/p1/p2.html时可能会转换为http://152.132.121.11/p1/p2.html 如果你在DNS中配置错误,那么你将得到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 ,路线53 - >通过自定义域可以使用API​​网关,内部使用云前端

可以使用Amazon认证管理器,AWS Gateway自定义域和& Route53,注意ACM的us-east-1限制

希望能帮到某人

答案 11 :(得分:2)

我认为你有这样的场景:你有一个独特的网络服务器托管各种网站,每个网站应该由一个独立的域提供:

所以,page1.html应由 www.customer1.com 等提供服务。

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

      

    customer1.example.com

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

  4.   

    <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

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

答案 12 :(得分:2)

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

TL; DR - 在NGINX中,您可以创建多个虚拟服务器,这些服务器可以根据服务器名称重定向您的请求。

实施例。 http://first.my-server.com重定向到A和http://second.my-server.com重定向到B位置,而两者共享一个物理服务器。

答案 13 :(得分:0)

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

答案 14 :(得分:-1)

当然可以通过以下技巧重定向:

创建新的标准主要区域 将其命名为您要重定向到的虚构URL 确保此虚构名称与任何AD DNS名称不同 使用以下条目创建记录:

空白.......................甲...................... ...... IP-ADDR-2

WWW .........................甲.................... ........ IP-ADDR-2

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

答案 15 :(得分:-1)

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

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