我正在开发一个网站,它将使用任何给定的[子]域名部分(即,在主机名之前的部分以及可选的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覆盖。
所需步骤:
configuration您的工作站以使用dnsmasq进行DNSparsing。
编辑/etc/resolv.conf并放入:
nameserver 127.0.0.1
这样做的副作用是本地的DNScaching,通常是另一个加号(尽pipe要知道这一点)。
修改dnsmasqconfiguration。
编辑/etc/dnsmasq.conf :
address=/example.com/127.0.0.1
你需要把根域放在这里,它应该以这种方式将所有的子域parsing为localhost 。
重新启动dnsmasq
通过host example.com和host subdomain.example.comvalidation。 两者都应该指向本地主机 。