未分类 · 2019年11月27日 0

在 XAMPP 中设置多个网站

xampp 是一个非常方便的本地 apache+php+mysql环境,在本地安装测试各种网站非常方便。但默认只有locahost一个网站。有时候不方便用子目录,文件移动来移动去又很麻烦。所以想在XAMPP里设置多个网站。

xampp是集成了apache作为web环境,那其实设置方法跟apache设置多虚拟主机的方法是一样的。

首先第一步就是设置hosts 文件,将要设置的域名指向127.0.0.1,至于是真实域名还是虚拟的,随你喜欢吧、不过我通常使用“.local”作为虚拟后缀。这个看个人喜好。理论上.com.net.cn甚至没有后缀都是可以的。任意字符串即可。
host文件的修改方法不累述,都调试网站了,应该都会改。实在不会或者不记得位置可以问万恶的度娘,这事骗不死人。

第二步是建立好域名对应的文件夹。
为了方便描述和理解,我这里举例我要设置a.local和b.local两个域名。没有特别强调的,名称之类的都是可以更换的,只要前后一致即可。
我在xampp/htdocs/目录下建立两个文件夹,分别命名为a.local和b.local。在目录里分别放入一个index.html文件,便于后面观察。内容我就直接输入对应目录的域名好了。

第三步是关键一步,在apache中设置多域名支持。

打开xampp\apache\conf\httpd.conf文件,搜索 “Include conf/extra/httpd-vhosts.conf”,确保前面没有 # 注释符,也就是确保引入了 vhosts 虚拟主机配置文件。嗯,其实xampp的默认是开启的。
打开文件xampp\apache\conf\extra\httpd-vhosts.conf,找到NameVirtualHost *:80,去掉前面的注释符号#。如果没有这一行,就自己添加一行。
文件里面其实有被注释掉的现成模板,参考着配置即可。这里我配置如下:

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot "/xampp/htdocs"
    ServerName localhost
    ErrorLog "logs/error.log"
    CustomLog "logs/access.log" common
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot "/xampp/htdocs/a.local"
    ServerName a.local
    ErrorLog "logs/a.local-error.log"
    CustomLog "logs/a.local-access.log" common
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot "/xampp/htdocs/b.local"
    ServerName b.local
    ErrorLog "logs/b.local-error.log"
    CustomLog "logs/b.local-access.log" common
</VirtualHost>

这里实际是配置了三个虚拟主机。因为开启了vhosts后,默认的httpd的配置就会失效了,默认该IP的访问就指向到vhosts里的第一条设置去了。因为种种原因(也许就是我强迫症),所以我把localhost指回了原来的目录,并且放在第一个。
如果host文件还指定了其他域名到127.0.0.1,但没有在vhosts里面分配目录,就会默认访问到localhost主机。假设用xampp做网站,这里应该第一个主机的目录改到一个子目录,免得所有站点都能被作为子目录访问到。

重启apache后,就算是完成设置了。打开浏览器测试下结果确认无误就起飞吧。怎么测试?之前不是在各自目录里放了内容不同的index.html吗?就是干这个用的。访问后看到字符就知道自己访问的是哪个目录了。玩得愉快。