XAMPP 虚拟主机配置,实现多域名访问本地项目

XAMPP 虚拟主机配置,实现多域名访问本地项目
之前在 Mac 下一直使用 MAMP 搭建本地 php 环境,因为其强大的组合配置以及方便的 UI 操作。因为公司的电脑是 Windows 的,有时候需要搭建 php 环境来调试一些小东西方便自己工作,因为只是小应用,所以自己搭建本地的 WAMP 环境就没有必要了,网上的 WAMP 环境集成包还是很多的,什么 PHPNow 啊,WampServer 啊,PHPStudy 啊,AppServ 啊,EasyPHP 啊之类的我都没用过,以及我之前一直在使用的 UniServer,琳琅满目啊,看得我眼花缭乱。之所以后来不用 UniServer 的原因其实我也不知道, UniServer 很强大,值得推荐一下,但是后来我又转用了 XAMPP ,因为它也很强大,并且文件包达 100MB 还多,当然你可以下载 Lite 版本,但是文件大小都比 UniServer 大出好几倍,可能就是因为它的大,后来我才转用了 XAMPP。

当然以上全是一些废话,下面才是正题。
有时候你需要一些顶级域名访问方式来访问你本地的项目文件而不是目录方式访问,这时候就需要配置虚拟主机,给你的目录绑定一个域名(本地的话可以通过修改 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 实现的。

当然网上搜索到的方法很多,但是网上的信息都是转载来转载去的,有的方法我怀疑是否验证过是否正确都不知道。以下的方法是我亲测的,如果你按照我的配置还是无法实现本地多域名调试的话,可能是因为你的 XAMPP 的版本和我的不一致造成的。你可以在下面评论告知我,我会给你一一解答。以下配置针对的是 XAMPP Windows 1.7.1 版本。

1、首先修改C盘WINDOWS\system32\drivers\etc目录下的 hosts 文件,用记事本打开,加入:
127.0.0.1 www.a.com
127.0.0.1 www.b.com

2、打开xampp\apache\conf\httpd.conf文件,搜索 “Include conf/extra/httpd-vhosts.conf”,确保前面没有 # 注释符,也就是确保引入了 vhosts 虚拟主机配置文件。

开启了httpd-vhosts.conf,默认的httpd.conf默认配置失效(确保 httpd-vhosts.conf 文件里也开启了虚拟主机配置,见第3条),访问此IP的域名将全部指向 vhosts.conf 中的第一个虚拟主机。

3、在虚拟主机设置文件xampp\apache\conf\extra\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 目录。

  • 沙发一下,呃,等明儿鲜果更新再仔细看。
    话说 PHPnow 自带的设置里就有 vhosts 哒……

  • 感觉phpnow还行,很小巧。

  • @NetPuter @猪小猪
    看着好像是挺不错的样子,特别是配置这一块很便捷,但感觉是有精简了东西?

  • 以前在XP下一直用phpnow,不知道我的vista什么原因,Apache一直安装不上,索性就放弃本地环境了,大不了装个IIS去

  • 标题是自动生成的?…

  • XAMPP很强大,不过感觉Appserv蛮简洁的

  • @Showfom
    phpnow确实在vista下无法启动~好像权限问题~
    AppServ 就可以~

  • @Epile
    Appserv什么都试过,Apache 服务就是装不上,换了端口也不行 日。

  • @Showfom
    Appserv管理器要右键,以管理员身份运行~

  • @Epile
    你没明白我的意思哦,我肯定右键 管理员身份运行的,就是Apache服务死活装不上,装了N多次,最后只能放弃

  • @Showfom
    这么奇怪~我在vista下一直能够顺利安装~会不会是杀毒软件或其他什么滴冲突?

  • @Epile
    So I have no idea 哎

  • xampp太强大了……
    新手推荐ApmServ就够用了

  • 技术贴,收藏先

  • 一直用XAMPP,感觉很好!

  • @aunsen
    其实就是文件大了点~

  • 小楼一夜听春雨

    猪小猪 :感觉phpnow还行,很小巧。

    :roll: 😳 😮 :mrgreen: 😆 💡 👿 👿 😎

  • @ 小楼一夜听春雨
    你的表情很丰富~

  • 本地访问2个域名,学习。
    我的Linux服务器,Xampp装好,启动。访问不了IP。(putty ,或SSHsecure安装)
    想求教,不知能不能援手?

  • @xyes
    不是很清楚你的问题?
    不过我还是推荐使用google来解决你的问题是最快速的哈

  • 收到的邮件乱码?你这儿的问题?

  • 1.7.3 用了这个方法不行啊

    • @k999 看样子你是没有给这个域名指定目录,只是单纯的hosts成功了么,vhosts似乎没设置?

  • kun

    纠错,打开httpd.conf 后应该查找
    Include “conf/extra/httpd-vhosts.conf”

    • @kun 找茬的?文中就是这么描述的啊

  • kun

    @Leeiio 文中双引号打错地方了,像文中那样查找就找不到结果

  • Pingback: 实现XAMPP多域名访问子目录 | 木木木木木()

  • 按照你的方法
    出现 Access forbidden!
    403 Not Found
    我的DocumentRoot 指定 /home/username/Video
    Video 位 777
    和解???望解答~~~~~~

  • Adg

    你好,在修改apacheconfextrahttpd-vhosts.conf这一步增加子域名的时候,如果需要www.abc.com指向到本地目录的其他端口呢?例如需要www.abc.com指向到127.0.0.1:8080?