【问题标题】:change DNS with php like as if editing hosts file?像编辑主机文件一样用 php 更改 DNS?
【发布时间】:2012-09-27 17:57:40
【问题描述】:

我不知道如何更好地表达这一点,主要是因为我真的不知道 DNS 是如何完全工作的。

给定一个 URL 和一个 IP,是否可以告诉 PHP 以给定的 URL 而不是真正的 DNS 向该 IP 发出所有请求(就像您在本地编辑主机文件一样)?

【问题讨论】:

  • 我不关注。您是否正在尝试进行 fopen、curl 或类似操作?如果是这样,为什么不直接使用 IP 地址?
  • 我不确定我是否明白你在问什么,但你看过主机名 http 标头吗?
  • 您要重新路由请求吗?
  • 我正在尝试制作一个工具,用于在未设置名称服务器时向客户显示网站。我很沮丧试图解释如何编辑主机文件
  • 就像说我在一个新主机上设计他们的网站,我只能通过 IP 访问。我想制作一个接受域和 IP 的工具,它可以在 iframe 中“模拟”网站,或者更好但不在 iframe 中。并路由到该 IP 而不是 DNS ip

标签: php apache dns


【解决方案1】:

我看到的唯一解决方案是运行您自己的绑定服务器,并告诉您的客户使用您的绑定服务器。然后,您可以完全控制如何将名称路由到 IP。

【讨论】:

  • 虽然这当然是一个解决方案,但让客户端使用备用 BIND 服务器可能与让他们修改其主机文件一样有问题。
  • @MikeBrant 这个想法让我想到我的答案:) 或者,作为替代方案,确保有 99,999% 的正常运行时间,因此不需要重新路由:) 或者 .. 使用子域作为测试环境和演示环境
  • 在 Mike 的回答中查看我的 cmets 以获得更好的解释。我意识到有更好的方法,但这些方法适用于小型个人客户,而不是使用版本控制等的公司客户。当我为新主机上的某人设置博客并想向他们展示时,我只想要一个简单的解决方案,没有太多更改 wordpress 设置、重新注册付费电子商务插件等的额外工作。
  • @Tallboy 为什么不使用子域进行演示?我有很多针对客户和我的博客的在线演示:请参阅simplemvc.example.ganymedes.be/movies 我可以即时添加这些演示,无需告诉任何人,只需提供网址
  • @jvberg,请参阅 mike brant 的回答中的最后 2 个 cmets
【解决方案2】:

不幸的是,你的情况是你的客户一时兴起。

如果他们在浏览器中输入 IP 地址,它将起作用,如果他们输入尚未在 DNS 或主机文件中设置的域,则它永远不会到达您控制的服务器。

如果您的网站设计正确,那么他们是否通过域名或 IP 地址访问它可能真的无关紧要。

【讨论】:

  • 我可能不清楚。假设他们的旧主机位于 example.com,新主机位于 example-new.com。当他们的网站仍在开发中时,我不想更改他们的名称服务器,但我不能使用 IP,因为我的很多代码都依赖于正确的域(我不能将 12.141.25.14/~username 作为给他们的链接,因为那时所有样式表中断)。显而易见的事情是告诉他们如何编辑主机文件,这很痛苦。我只想有一个非常简单的工具,它只与指定的 IP 对话,就像他们编辑了他们的 hosts 文件一样
  • Wordpress 经常会遇到这个问题,除非您在设置页面中更改它。但是我经常使用需要在给定网址上“注册”的电子商务软件。来回改变这一切是一种痛苦。绝对值得我花时间开发一个快速工具(如果可能的话)
  • @Tallboy 那你为什么不创建你自己的非生产域名呢?如果您有使用加密域注册密钥的工具,那么您应该与这些供应商讨论获取用于开发/测试目的的密钥。根据我的经验,任何体面的供应商都会给你这个。此外,如果密钥仅与域(即 example.com)相关联,那么使用像 test.example.com 这样的子域应该是合适的。
  • 没有详细说明,我只是真的想知道它是否可能。我知道有很多方法可以做事,但是根据我收到的最多的请求,这个工具会让事情变得非常简单。我现在有人有 2 台主机(他们正在切换主机)。我已经在新主机上设置了一个我设计的站点,而他们的旧主机为他们的旧站点提供服务。我想在不更改大量 wordpress 设置的情况下向他们展示新网站(我无法通过 IP 向他们展示,因为网站在不更改所有上述设置的情况下中断)。
  • 所以当他们还没有看到他们的网站时,我无法更新名称服务器,但如果有办法让他们查看他们的工具,我不想进去并来回更改大量设置就像他们编辑了他们的主机文件一样。从那里,我只是切换名称服务器及其简单
【解决方案3】:

我认为这是 apache 通过 .htacess 或其他配置文件所做的。这不是对 DNS 的“更改”,而是一种根据需要管理每个请求的方法,即使使用唯一且通用的 .php 文件也是如此

【讨论】:

    猜你喜欢
    • 2013-09-23
    • 1970-01-01
    • 1970-01-01
    • 2014-01-21
    • 2016-03-23
    • 1970-01-01
    • 2022-06-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多