我想设置我的地方发展机,以便对任何请求*.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服务器或其他坚硬的东西,有什么建议?
Answer 1:
亚克力DNS代理(免费,开放源代码)做这项工作。 它创建了自己的hosts文件代理的DNS服务器(您自己的计算机上)。 hosts文件接受通配符。
从官方网站下载
http://mayakron.altervista.org/support/browse.php?path=Acrylic&name=Home
配置亚克力DNS代理
配置亚克力DNS代理,从上面的链接安装它,然后去:
- 开始
- 程式
- 亚克力DNS代理
- 配置
- 编辑自定义HOSTS文件(AcrylicHosts.txt)
添加如下因素线在文件的结尾:
127.0.0.1 *.localhost
127.0.0.1 *.local
127.0.0.1 *.lc
重新启动DNS亚克力代理服务:
- 开始
- 程式
- Acrilic DNS代理
- 配置
- 重新启动亚克力服务
您还需要在你的网络接口设置来调整你的DNS设置:
- 开始
- 控制面板
- 网络和Internet
- 网络连接
- 本地连接属性
- TCP / IPv4的
设置“使用下面的DNS服务器地址”:
Preferred DNS Server: 127.0.0.1
如果你那么这个答案与jeremyasnyder的回答(用结合VirtualDocumentRoot
)然后你可以自动设置域/虚拟主机,只需创建一个目录。
Answer 2:
要回答你的问题,你不能在Windows下的hosts文件中使用通配符。
但是,如果你想只更改hosts文件,使新的网站工作....你可以配置你的Apache这样,你就不必继续编辑它的配置:
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 \网站\ dev的\测试,并将在那里所必需的文件,它就可以工作。
另一种选择是使用<Directory>
标签的apache.conf并引用来自网页的http://本地主机/项目/ 。
Answer 3:
我不认为这是可能的。
反正你在每次添加一个新的站点和位置的时间来修改Apache virtualroot条目,所以它不是一个大的工作syncronise新名称为Windows虚拟主机文件。
更新:请检查下一个答案,这个答案的评论。 这个答案是6岁和不正确了。
Answer 4:
我发现一个帖子关于使用Windows Hosts文件也说“没有通配符是允许的。”
在过去,我刚才说的其他条目的hosts文件,因为(如前面说的),这不是那么多的工作时,你已经在编辑Apache的配置文件。
Answer 5:
编辑hosts文件不太痛苦的,当你从Windows“IPCONFIG / FLUSHDNS”命令提示符,而不是重新启动计算机。
Answer 6:
要添加到很好的建议已经在这里, XIP.IO是这是公开可用的一个梦幻般的通配符的DNS服务器。
myproject.127.0.0.1.xip.io -- resolves to --> 127.0.0.1
other.project.127.0.0.1.xip.io -- resolves to --> 127.0.0.1
other.machine.10.0.0.1.xip.io -- resolves to --> 10.0.0.1
(指定非回送地址的能力是梦幻般的,你不能访问主机文件iOS设备的测试网站。)
如果合并这与一些在其他的答案中提到的Apache配置的,你有可能以零设置添加VirtualHosts。
Answer 7:
您可以谈谈您的网络管理员将设置你的域(说“evilpuppetmaster.hell”),并具有有通配符让一切(* .evilpuppetmaster.hell')解析为您的IP
Answer 8:
我们有这样的使用在我们的本地DNS服务器通配符DNS工作:添加A
记录像*.local -> 127.0.0.1
我认为你的网络设置,将必须对网络上的机器域后缀搜索列表中选择域名后缀,所以你可能需要更换.local
与贵公司的内部域(例如.int
),然后添加一个子像.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/
Answer 9:
我已经用Python编写一个简单的DNS代理。 它会读取/ etc / hosts中通配符项目。 在这里看到: http://code.google.com/p/marlon-tools/source/browse/tools/dnsproxy/dnsproxy.py
我已经在Linux和Mac OS X的测试,但尚未在Windows中。
Answer 10:
您可以尝试AngryHosts ,它提供了一种支持通配符和正则表达式。 其实,这是一个hosts文件,增强和管理软件。
更多的功能可以看出@ http://angryhosts.com/features/
Answer 11:
我使用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本地主机环境(网络接口,DNS或相似或在Linux中的/etc/resolv.conf)。
而已
Answer 12:
我做了这个简单的工具来采取主机的地方。 正则表达式的支持。 https://github.com/stackia/DNSAgent
了一个示例配置:
[
{
"Pattern": "^.*$",
"NameServer": "8.8.8.8"
},
{
"Pattern": "^(.*\\.googlevideo\\.com)|((.*\\.)?(youtube|ytimg)\\.com)$",
"Address": "203.66.168.119"
},
{
"Pattern": "^.*\\.cn$",
"NameServer": "114.114.114.114"
},
{
"Pattern": "baidu.com$",
"Address": "127.0.0.1"
}
]
Answer 13:
我找不到书面禁令,但按照惯例,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文件不支持通配符项。
解决方法是提前创建的所有条目,也许用一个脚本把几百项一次。
Answer 14:
@petah和亚克力DNS Proxy是最好的答案,并在结束时,他引用了做多的网站使用Apache其中@jeremyasnyder描述远一点能力下降......
......然而,在我们的例子中,我们正在测试一个多租户托管制度,我们要测试去一样的,所以最域virtualhost
,而一对夫妇别人都指向别处。
所以在我们的情况下,您只需使用正则表达式通配符在ServerAlias
指令,像这样......
ServerAlias *.foo.local
Answer 15:
这里是为那些试图实现目标的总配置(在开发环境通配符即XAMPP - 这个例子假设所有站点指向同一个代码库)
hosts文件(添加一个条目)
文件:%SYSTEMROOT%\ SYSTEM32 \ DRIVERS \等\主机
127.0.0.1 example.local
httpd.conf配置(启用虚拟主机)
文件:\ XAMPP \等\ httpd.conf文件
# Virtual hosts
Include etc\extra\httpd-vhosts.conf
的httpd-vhosts.conf配置
文件:XAMPP \等\额外\的httpd-vhosts.conf
<VirtualHost *:80>
ServerAdmin admin@example.local
DocumentRoot "\path_to_XAMPP\htdocs"
ServerName example.local
ServerAlias *.example.local
# SetEnv APP_ENVIRONMENT development
# ErrorLog "logs\example.local-error_log"
# CustomLog "logs\example.local-access_log" common
</VirtualHost>
重启Apache
创建PAC文件:
不管你想要保存为whatever.pac然后加载在浏览器的网络>代理> auto_configuration设置的文件(重新加载,如果你改变这一点)
function FindProxyForURL(url, host) {
if (shExpMatch(host, "*example.local")) {
return "PROXY example.local";
}
return "DIRECT";
}
Answer 16:
您可以使用echoipdns这个( https://github.com/zapty/echoipdns )。
通过运行echoipdns local
的。本地子域中的所有请求重定向到127.0.0.1,所以用xyz.local等任何域名将解析为127.0.0.1。 你可以使用任何其它后缀也只是局部更换你想要的名字。
Echoipdns更是如虎添翼,当你想用你的网址从网络仍然可以使用零配置使用其他机器。
对于例如如果你的机器的IP地址为192.168.1.100现在你可以使用一个域名xyz.192-168-1-100.local将始终解析为192.168.1.100。 这片神奇的是由echoipdns通过查看域名的第二部分中的IP地址和DNS查询返回相同的IP地址来完成。 你将不得不运行的机器上echoipdns从您要访问的远程系统。
echoipdns也可以设置为独立的DNS代理,所以仅通过指向这个DNS,你现在可以使用上述所有好处,而不每次运行一个特殊的命令,你甚至可以用它从移动设备。
所以基本上这简化了本地以及团队环境中的通配符域基于DNS的发展。
echoipdns在Mac,Linux和Windows。
注:我为echoipdns作者。
Answer 17:
配置与丙烯酸DNS代理配置nginx的子域汽车
为您的nginx站点文件夹auto.conf文件
server {
listen 80;
server_name ~^(?<branch>.*)\.example\.com;
root /var/www/html/$branch/public;
index index.html index.htm index.php;
charset utf-8;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
error_log /var/log/nginx/$branch.error.log error;
sendfile off;
client_max_body_size 100m;
location ~ \.php$ {
try_files $uri /index.php =404;
fastcgi_pass php-fpm:9000;
fastcgi_index index.php;
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}
加入丙烯酸hosts文件127.0.0.1 example.com *.example.com
,然后重新启动亚克力服务。 $分支 -你的子域名。
集而不是根在/ var / www / html等/ $分公司/公; 你的项目路径
Answer 18:
您可以使用动态DNS客户端,如http://www.no-ip.com 。 然后,与外部DNS服务器的CNAME * .mydomain.com来给mydomain.no-ip.com。
Answer 19:
虽然你不能添加通配符这样,你可以添加你所需要的,至少在测试网站的完整列表,该作品不够好,我在你的hosts文件,你只需要添加:
127.0.0.1 site1.local
127.0.0.1 site2.local
127.0.0.1 site3.local
...
Answer 20:
文章来源: Wildcards in a Windows hosts file