有时候你需要一些顶级域名访问方式来访问你本地的项目,这时候就需要配置虚拟主机,给你的目录绑定一个域名,实现多域名绑定访问。(本地的话可以通过修改 hosts 文件随便绑定什么域名比如www.a.com
或者 localdemo
)。
现在假定你有两个目录,一个存在于 /xampp/htdocs/a
,另一个存在于 /xampp/htdocs/b
。
现在你想要在本地测试的时候访问 www.a.com
对应的目录是 /xampp/htdocs/a
,访问 www.b.com
对应的目录是 /xampp/htdocs/b
。懂得 Apache配置的其实就可以绕开了,因为 XAMPP 无非就是集成了 Apache 之类的环境集成包,实现多域名也就是通过配置 Apache 实现的。
1、首先修改 etc 目录下的 hosts 文件
127.0.0.1 www.a.com
127.0.0.1 www.b.com
2、打开httpd.conf
文件,搜索 Include conf/extra/httpd-vhosts.conf
,确保前面没有 # 注释符,也就是确保引入了 vhosts 虚拟主机配置文件。
开启了httpd-vhosts.conf
,默认的httpd.conf
默认配置失效(确保httpd-vhosts.conf
文件里也开启了虚拟主机配置,见第3条),访问此IP的域名将全部指向 vhosts.conf
中的第一个虚拟主机。(注意是第一个,详见第4)
3、在虚拟主机设置文件httpd-vhosts.conf
里设置:
取消 NameVirtualHost *:80
前面的 ##,这样就启用了 vhosts.conf
,默认的httpd.conf
默认配置失效。虚拟主机配置将只在httpd-vhosts.conf
里设置。
<VirtualHost *:80>
DocumentRoot /xampp/htdocs/a
ServerName www.a.com
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /xampp/htdocs/b
ServerName www.b.com
</VirtualHost>
4、 设置完了第3条之后,你会发现访问localhost
直接指向到设置的 a 那个路径去了,这个问题在第2条有讲。也就是开启了 vhosts
后,默认的 httpd
的配置就会失效了,默认的访问就指向到vhosts
里的第一条设置去了。这时候你要把localhost
的目录配置给设置回来。
<VirtualHost *:80>
DocumentRoot /xampp/htdocs/
ServerName localhost
</VirtualHost>
至此,XAMPP 的虚拟主机设置完毕,现在访问 localhost 还是原来的 XAMPP 的帮助指南,访问www.a.com
将指向到绑定的 a 目录,访问 www.b.com
将指向到绑定的 b 目录。