虽说apache安装好后给了我们一个默认的一个站点,而且我们还可以将这个默认的站点修改成我们自己的站点,但是这似乎还不能完全满足我们的需要,因为当我们要在本机上开发(phpWeb)或者测试另外一个站点的时候,那么我们是不是要将那个默认的站点修改成我们自己的那个站点呢,如果我们希望我们电脑上有同时多个站点,那又该怎么办呢?所以需要一种可以同时在一个电脑上同时提供多个站点,那么就需要配置多站点了。
多站点配置(1)打开我们的apache配置文件,httpd.conf,查找vhost.conf关键字,将查找到的下面这行前面的注释符号#去掉以打开多站点配置:
#Include conf/extra/httpd-vhosts.conf
(2)打开conf/extra/httpd-vhosts.conf文件,按如下步骤配置站点
a. 在这个文件的头部(尽量添加在上面),添加如下一行代码(apache2.2需要这一步,apache2.4 NameVirtualHost被移除了,可以不做这一步)
# 设定希望提供“多站点”服务的IP地址和端口号,通常默认就是:*.80
# 其中*代表所有的IP,默认其实apache安装好之后就设置好,无需手动设置(关键字NameVirtualHost):
# 只写一次
NameVirtualHost *:80
b. 将默认的两个站点去掉,或者修改成我们自己的站点,如我们将这个两个站点,第一个站点配置成apache默认的站点,第二个配置成我们自己的一个站点(就是磁盘上的一个文件夹而已)
# 将apache的默认站点设置成第一个站点,这样
# 当请求的站点在这里没有匹配到的时候,apache
# 会将这里的第一个站点返回
<VirtualHost *:80>
ServerName localhost
DocumentRoot "D:\AMP\httpd-2.4.18-win64-VC11\Apache24\htdocs"
# 属性需要和DocumentRoot一致
<Directory "D:\AMP\httpd-2.4.18-win64-VC11\Apache24\htdocs">
Options Indexes
# 允许所有的请求
Require all granted
# 几乎不要写Deny
DirectoryIndex index.html,index.php
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerName www.myphp.com
# 设定该站点的别名,即通过以下域名也可以访问
ServerAlias "lt.php.com"
DocumentRoot "D:\Software\PHP\project"
# 属性需要和DocumentRoot一致
<Directory "D:\Software\PHP\project">
Options Indexes
# 允许所有的请求
Require all granted
# 几乎不要写Deny
DirectoryIndex index.php index.php
</Directory>
</VirtualHost>
注意看上面的注释,其中第一个站点设置成了apache默认的站点,第二个站点设置成了我磁盘上的某个文件夹,以后需要更多的站点,那么在后面按上面的形式以此添加即可,但是DocumentRoot后面的路径需要和Directory的那个路径一致。
注意:- 因为我们打开了多站点配置,那么当apache检测无法匹配到的域名,apache将会将第一个站点默认返回,写在最前面的那个站点就是第一个站点。
- 上面的站点权限访问控制是基于apache2.4的,apache2.2是Deny from all(拒绝所有)或者Allow From all 或者Deny From ip地址或域名,Allow From 多个ip地址或者多个域名的形式。
上面的这两步做好后,需要确保我们电脑的hosts文件中有我们自己设置站点的域名或者别名对应的ip地址,添加本机域名对应的ip可以参考Apache主机(站点)配置,端口监听,目录访问权限及分布式权限这篇文章。