我想设置我的本地开发机器,以便任何对*的请求。Local被重定向到localhost。这个想法是,当我开发多个站点时,我只需向Apache添加名为site1的vhosts。地方,site2。让它们都解析到localhost,而Apache则相应地服务于不同的站点。

我用的是Windows XP。

我试着加上

127.0.0.1       *.local

到我的c:\windows\system32\drivers\etc\hosts文件,也试过:

127.0.0.1       .local

这两种方法似乎都不管用。

我知道我可以在不同的端口号上设置它们,但这是一种痛苦,因为很难记住哪个端口是哪个端口。

我不想设置本地DNS服务器,有什么建议吗?


当前回答

当您从windows命令提示符运行“ipconfig /flushdns”而不是重新启动计算机时,编辑hosts文件就不那么痛苦了。

其他回答

虽然你不能添加这样的通配符,但你可以添加你需要的完整网站列表,至少对于测试来说,这对我来说足够好,在你的hosts文件中,你只需要添加:

127.0.0.1 site1.local 127.0.0.1 site2.local 127.0.0.1 site3.local ...

您可以使用echoipdns (https://github.com/zapty/echoipdns)。

通过运行echoipdns local,所有对.local子域的请求都被重定向到127.0.0.1,因此任何具有xyz. local子域的域。本地etc将解析为127.0.0.1。您可以使用任何其他后缀,也只是用您想要的名称替换local。

Echoipdns甚至更强大,当你想使用你的url从其他机器在网络中,你仍然可以使用它零配置。

例如,如果你的机器ip地址是192.168.1.100,你现在可以使用一个域名xyz.192-168-1-100。本地的,将始终解析为192.168.1.100。这个魔术是由echoipdns通过查看域名的第二部分中的ip地址,并在DNS查询中返回相同的ip地址来完成的。您必须在要访问远程系统的机器上运行echoipdns。

echoipdns也可以设置为一个独立的DNS代理,因此,只要指向这个DNS,您现在就可以使用所有上述优点,而无需每次都运行一个特殊的命令,甚至可以从移动设备使用它。

因此,从本质上讲,这简化了本地和团队环境中基于通配符域的DNS开发。

echoipdns适用于Mac、Linux和Windows。

注:我是echoipdns的作者。

我发现一个关于使用Windows主机文件的帖子也说“不允许通配符”。

在过去,我只是将额外的条目添加到hosts文件中,因为(如前所述),当您已经在编辑apache配置文件时,并没有那么多额外的工作。

我用Python写了一个简单的dns代理。它将读取/etc/hosts中的通配符条目请看这里:http://code.google.com/p/marlon-tools/source/browse/tools/dnsproxy/dnsproxy.py

我在Linux和Mac OS X上测试过,但还没有在Windows上测试过。

丙烯酸DNS代理(免费,开源)的工作。它用自己的hosts文件创建一个代理DNS服务器(在您自己的计算机上)。hosts文件接受通配符。

官方网站下载

http://mayakron.altervista.org/support/browse.php?path=Acrylic&name=Home

配置亚克力DNS代理

要配置丙烯酸DNS代理,从上面的链接安装它,然后转到:

开始 项目 丙烯酸DNS代理 配置 编辑定制主机文件(AcrylicHosts.txt)

在文件末尾添加如下代码:

127.0.0.1   *.localhost
127.0.0.1   *.local
127.0.0.1   *.lc

重新启动丙烯酸DNS代理服务:

开始 项目 Acrilic DNS代理 配置 重启亚克力服务

您还需要在网络接口设置中调整DNS设置:

开始 控制面板 网络与互联网 网络连接 本地连接属性 TCP / IPv4

设置“使用以下DNS服务器地址”:

Preferred DNS Server: 127.0.0.1

如果你把这个答案和jeremyasnyder的答案结合起来(使用VirtualDocumentRoot),你就可以通过简单地创建一个目录来自动设置域/虚拟主机。