Windows主机文件中的通配符

时间:2020-03-06 14:46:13  来源:igfitidea点击:

我想设置本地开发机器,以便将任何对* .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中使用&lt;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"而不是重新启动计算机时,编辑主机文件就不那么麻烦了。