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

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

然而,目前这个网站是localhost,因为我正在使用我的工作站开发它,所以我首先修补/ etc / hosts以包含:

127.0.0.1 mydomain 

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

 <VirtualHost *:80> ServerName mydomain 

但现在我可以看到,fe example.mydomain不指向本地主机,这意味着/ etc / hosts添加对“something.mydomain”无效。 看起来规则是逐字logging的,而且我也检查过像* .mydomain这样的通配符是不允许的。

有这个解决scheme吗?

如果你在Linux上(我假设你是,因为你提到/ etc / hosts),你可以试试dnsmasq 。 我有时使用它进行快速testing和本地DNS覆盖。

所需步骤:

  1. 安装dnsmasq
  2. configuration您的工作站以使用dnsmasq进行DNSparsing。

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

     nameserver 127.0.0.1 

    这样做的副作用是本地的DNScaching,通常是另一个加号(尽pipe要知道这一点)。

  3. 修改dnsmasqconfiguration。

    编辑/etc/dnsmasq.conf

     address=/example.com/127.0.0.1 

    你需要把根域放在这里,它应该以这种方式将所有的子域parsing为localhost

  4. 重新启动dnsmasq

  5. 通过host example.comhost subdomain.example.comvalidation。 两者都应该指向本地主机