Windows主机文件中的通配符
我想设置本地开发机器,以便将任何对* .local的请求都重定向到localhost。这个想法是,当我开发多个站点时,我可以将虚拟主机添加到Apache中,分别称为" site1.local"," site2.local"等,并将它们全部解析为" localhost",而Apache则相应地服务于另一个站点。
我在Windows XP上。
我尝试添加
127.0.0.1 *.local
到我的c:\ windows \ system32 \ drivers \ etc \ hosts
文件中,也尝试过:
127.0.0.1 .local
两者似乎都不起作用。
我知道我可以在不同的端口号上设置它们,但是这很麻烦,因为很难记住哪个端口是哪个。
我不想设置本地DNS服务器或者其他任何困难,有什么建议吗?
解决方案
我认为不可能。
无论如何,每次添加新站点和位置时,我们都必须修改apache virtualroot条目,因此将新名称同步到Windows vhost文件并不是一件繁重的工作。
更新:请检查下一个答案和对该答案的评论。这个答案是6岁,现在不再正确。
我们可以说服网络管理员为我们设置一个域(例如'evilpuppetmaster.hell')并在其中使用通配符,以便所有内容(* .evilpuppetmaster.hell')都能解析为IP
我发现有关使用Windows主机文件的帖子也显示"不允许使用通配符"。
过去,我刚刚将额外的条目添加到hosts文件中,因为(如前所述),当我们已经在编辑apache配置文件时,它并没有太多的工作。
要回答问题,我们不能在Windows下的hosts文件中使用通配符。
但是,如果我们只想更改hosts文件以使新站点正常工作....,可以像这样配置Apache,而不必继续编辑它的config:
http://postpostmodern.com/instructional/a-smarter-mamp/
基本上是基于我的设置的快速摘要,将以下内容添加到apache.conf文件中:
LoadModule vhost_alias_module modules/mod_vhost_alias.so NameVirtualHost *:80 <Directory "/xampp/sites"> Options Indexes FollowSymLinks Includes ExecCGI AllowOverride All Order allow,deny Allow from all </Directory> <VirtualHost *:80> VirtualDocumentRoot c:/xampp/sites/%-1/%-2+/ </VirtualHost>
这使我可以添加一个条目,例如:
127.0.0.1 test.dev
然后创建目录c:\ xampp \ sites \ dev \ test并将必要的文件放在其中,它就可以正常工作。
另一种选择是在apache.conf中使用<Directory>
标记,并引用来自http:// localhost / project /的页面。
我找不到书面禁止,但按照惯例,Windows主机文件紧跟UNIX主机文件,并且不能将通配符主机名引用放入该文件中。
如果我们阅读手册页,它会说:
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文件的代码不支持通配符条目。
解决方法是预先创建所有条目,也许使用脚本一次放置几百个条目。
我们可以使用动态DNS客户端,例如http://www.no-ip.com。然后,使用外部DNS服务器CNAME * .mydomain.com到mydomain.no-ip.com。
让Apache在许多端口上监听也是一种选择。
当我们从Windows命令提示符运行" ipconfig / flushdns"而不是重新启动计算机时,编辑主机文件就不那么麻烦了。