如何将任何 *.mydomain 变体指向本地主机(用于开发)?

如何将任何 *.mydomain 变体指向本地主机(用于开发)?

我正在开发一个网站,它将使用任何给定的子域名部分(即主机名前面的部分,以及可选的 TLD 部分)。我认为在生产中,这将是一项简单的任务 - 确保二级域名部分的 DNS 指向 IP,设置 Apache2 虚拟主机以侦听该(或任何)IP 端口 80,然后仅使用 PHP 根据“主机”请求标头做出决策。

但是,由于我使用工作站进行开发,因此当前站点是 localhost,因此我首先修补了 /etc/hosts 以包含:

127.0.0.1 mydomain

我只使用了一个名称部分(可以说是自定义 TLD),以免干扰 Internet 域名。然后我为 Apache 2.2 设置了一个 VirtualHost 指令,如下所示:

<VirtualHost *:80>
    ServerName mydomain

但现在我可以看到 fe example.mydomain 不指向 localhost,这意味着 /etc/hosts 添加对“something.mydomain”无效。看来规则是逐字执行的,而且我已经检查过不允许使用 *.mydomain 等通配符。

有解决办法吗?

答案1

如果你使用的是 Linux(我假设你是,因为你提到了 /etc/hosts),你可以尝试域名系统为此。我有时会使用它进行快速测试和本地 DNS 覆盖。

所需步骤:

  1. 安装域名系统
  2. 配置您的站点以使用 dnsmasq 进行 DNS 解析。

    编辑/etc/resolv.conf并放入:

    nameserver 127.0.0.1
    

    这样做的副作用是本地 DNS 缓存,这通常是另一个优点(但请注意这一点)。

  3. 调整域名系统配置。

    编辑/etc/dnsmasq.conf

    address=/example.com/127.0.0.1
    

    您需要将根域名放在这里,它应该将所有子域名解析为本地主机这边走。

  4. 重新开始域名系统

  5. 使用host example.com和进行验证host subdomain.example.com。两者都应指向本地主机

相关内容