【问题标题】:Using DNS to redirect to another URL with a path [closed]使用 DNS 重定向到具有路径的另一个 URL [关闭]
【发布时间】:2012-03-15 16:31:28
【问题描述】:

我正在尝试通过 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 域,您可以在左侧菜单 -> 网站中使用其“域转发”。

标签: dns redirect


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    添加

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

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

    【讨论】:

      【解决方案3】:

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

      虽然 dns 不理解 url 的路径部分,但它会理解子域,所以而不是:

      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。

      ~ 给猫剥皮的方法总是不止一种

      【讨论】:

      • 这听起来像是一个无用的构造,与其让 proof.proof-two.com 指向 www.proof-two.com/path/index.htm,不如让 www.roof .com 指向那里,不需要额外的 DNS 记录。
      • @Michiel 这听起来确实像一个无用的结构如果您可以轻松访问proof-two.com 网络服务器。有时大公司(和官僚机构)会让一切变得比想象的要复杂得多。
      • "然后转到您托管 proof-two.com 的任何地方并将其设置为将 proof.proof-two.com 指向 www.proof-two.com/path/index.htm" 怎么做这个?
      • 重定向不是 DNS 的功能。我认为这就是重点。它是一个 HTTP 函数。 DNS 将用于将 www.proof.com 指向进行重定向的服务器。但实际上,它可以是任何具有重定向规则的服务器名称,因为重定向是由 Web 服务器在 HTTP 级别处理的。 www.proof.com 可能是 www.microsoft.com 的 CNAME,例如,如果您与 Microsoft 达成了从其 Web 服务器重定向的协议。它只需要响应 30 倍重定向到 www.proof-two.com/path/index.htm
      【解决方案4】:

      我假设你有这样的场景:你有一个独特的网络服务器托管各种网站,每个网站都应该由一个单独的域呈现:

      所以,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。

      【讨论】:

        【解决方案5】:

        我有一个个人项目可以帮助您解决这个问题。 这是一个开源重定向解决方案,让您只需更改 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.

        【讨论】:

        • 问题是关于重定向到完整路径 url,而不仅仅是域。
        • 这还不是完整路径
        • 可以通过服务的“.opts-slash”支持路径。功能。将jobs.my-domain.com 重定向到my-domain.com/jobs 配置您的DNS 区域如下: 主机记录:作业类型:CNAME 到:www.my-domain.com.opts-slash.jobs.redirect.center
        • 如果您的注册商不提供重定向,这真的很酷很简单——太棒了!
        • 这太完美了!我假设存在这样的东西,但找不到(我猜他们需要在他们的 SEO 上工作)。
        【解决方案6】:

        如果您使用 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

        【讨论】:

        • 对于任何使用 AWS 的人来说,这都是一个很棒且非常有用的答案。谢谢!甜蜜的解决方法
        • 重要提示:存储桶的命名必须与重定向到它的主机名相匹配。见serverfault.com/a/584714/105720
        • 这可以重定向到目录,但不能重定向到特定页面。如果您将所有请求重定向到“www.example.com/foo/bar/baz.html”,AWS 将“有帮助地”将“/”附加到 URL,将其转换为“www.example.com/foo/bar/baz .html/" 并返回 404 错误。
        • 很遗憾,这与 HTTPS 不兼容。我最终制作了一个带有重定向页面的 CloudFront 分配。
        【解决方案7】:

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

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

        执行此操作的服务是EasyRedir。完全披露:我开发了 EasyRedir。当然还有其他选择,所以我鼓励你四处看看。

        【讨论】:

          【解决方案8】:

          编辑

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

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

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

          原答案

          我使用 TXT 记录做到了这一点。

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

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

          【讨论】:

          • 你能再充实一点吗?您有关于如何使用 TXT 记录的参考资料吗?
          • 这样还会保留url参数吗?
          • 经过调查,OVH 似乎为我做了这件事。请参阅:ovh.com/fr/g1339.redirection-nom-de-domaine(法国)。我会更新我的答案。
          【解决方案9】:

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

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

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

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

          本质上,我们在这里拥有的是重定向。有效的 URL 将根据现有的 DNS 主 DNS 区域进行解析。虚构的 URL 将被重定向到 ip-addr-2。重要的是这个条目的名称是空白的,所以它会下降到记录中的下一个条目并重定向到 ip-addr-2

          【讨论】:

            【解决方案10】:

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

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

            【讨论】:

              【解决方案11】:

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

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

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

              【讨论】:

                【解决方案12】:

                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。

                【讨论】:

                • 我一直在尝试这个,但它不起作用。它所做的只是将用户重定向到redirect.center 的站点。
                • 你能复制你的 CNAME 注册吗?你也可以复制你重新定义的网站吗?
                • @Renan 确保源域存在于 DNS 中,并且可以被 redirect.center 服务器查找;在浏览器中导航到 target-domain.com.redirect.center 也不起作用。见说明:github.com/udleinati/redirect.center/issues/…
                【解决方案13】:

                一项相关工作总结了以下所有内容:

                问题:

                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 上,Route 53 -> API 网关可以通过自定义域在内部使用云前端

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

                希望对某人有所帮助

                【讨论】:

                  【解决方案14】:

                  虽然几乎每个人都已经说过 - 仅使用 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,而两者共享一个物理服务器。

                  【讨论】:

                  • 一个最短的可能的 ngxinx 配置文件的演示,可能通过 docker 设置来实现这一点,在这里会有所帮助
                  【解决方案15】:

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

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2023-03-11
                    • 1970-01-01
                    • 1970-01-01
                    • 2020-06-28
                    • 1970-01-01
                    相关资源
                    最近更新 更多