我想设置我的本地开发机器,以便任何对*的请求。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服务器,有什么建议吗?


当前回答

你可以说服你的网络管理员为你设置一个域名(说'evilpuppetmaster.hell'),并在那里使用通配符,这样所有的东西(*.evilpuppetmaster.hell')都解析到你的IP

其他回答

你可以试试AngryHosts,它提供了一种支持通配符和正则表达式的方法。实际上,它是一个主机文件增强和管理软件。 更多功能可以在http://angryhosts.com/features/上看到

我们在本地DNS服务器中使用通配符DNS:添加一个A记录,比如*。Local -> 127.0.0.1

我认为你的网络设置需要在网络上机器的域名后缀搜索列表中有所选择的域名后缀,所以你可能想用你公司的内部域名(例如.int)取代.local,然后添加一个子域名,如.localhost.int,以明确它的用途。

因此,*.localhost.int将为网络上的每个人解析为127.0.0.1,如果端点挂起子域(例如site1.localhost.int, site2.localhost.int),则所有开发人员的配置文件设置将“正常工作”。

dnsmasq看起来也不错,但我还没有尝试过: http://ihaveabackup.net/2012/06/28/using-wildcards-in-the-hosts-file/

我使用DNSChef来做这个。

https://thesprawl.org/projects/dnschef/

你必须下载应用程序,在Linux或Mac中,你需要python来运行它。Windows有自己的exe。

例如,您必须创建一个包含dns条目的ini文件

[A]
*.google.com=192.0.2.1
*.local=127.0.0.1
*.devServer1.com=192.0.2.3

然后,您必须以管理员权限启动dns应用程序

sudo python dnschef.py --file myfile.ini -q

或者在Windows中

runas dnschef.exe --file myfile.ini -q

最后,您需要设置为您的本地主机环境(网络,接口,DNS或类似或在linux /etc/resolv.conf)的唯一DNS。

就是这样

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

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

我找不到书面禁止,但按照惯例,Windows hosts文件紧跟UNIX hosts文件,不能在该文件中放入通配符主机名引用。

如果你阅读手册页,它说:

DESCRIPTION
     The hosts file contains information regarding the known hosts on the net-
     work.  For each host a single line should be present with the following
     information:

           Internet address
           Official host name
           Aliases

尽管它说,

     Host names may contain any printable character other than a field delim-
     iter, newline, or comment character.

从实践层面来看,这是不正确的。

基本上,查看/etc/hosts文件的代码不支持通配符条目。

解决方法是提前创建所有的条目,可能使用一个脚本来一次性放置几百个条目。