配置Apache虚拟主机(VirtualHost)目的
让本地的测试环境使用多个域名,同时可以使用不同的网站根目录,有几个域名需要共用一个相同的网站根目录。
环境
系统:Windows 2003
Web程序版本:Apache2
配置Apache虚拟主机操作步骤
打开Apache安装目录下的confhttpd.conf
在末尾适当位置添加以下配置指令,根据需要自行修改相关设置,详细的指令解释可继续阅读到文章末尾。
#####BY####clin003################
ServerName ab.baicailin.com
NameVirtualHost 192.168.1.1
<VirtualHost 192.168.1.1>
ServerName site.clin003.com
DocumentRoot D:/wwwroot/htdocs
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory D:/wwwroot/htdocs>
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
<VirtualHost 192.168.1.1>
#ServerName ab.baicailin.com
ServerAlias ab.clin003.com ab.baicailin.com
DocumentRoot D:/wwwroot/htdocs/ab
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory D:/wwwroot/htdocs/ab>
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
#默认WEB服务目录为 “D:/wwwroot/htdocs” (也就是第一个虚拟主机对应目录),若没有匹配域名请求的时候会使用到默认虚拟主机。
配置修改完成后,保存,然后重启 Apache 服务即可生效。
ServerName ab.baicailin.com
#主机名 建议使用域名
NameVirtualHost 192.168.1.1
#设置虚拟主机。 当在NameVirtualHost指令后使用IP时,任何使用IP的URL请求都是针对虚拟主机的,主服务器从不会响应一个使用IP的URL 请求。
<VirtualHost 192.168.1.1>
#虚拟主机配置开始标记
ServerName site.clin003.com
#设置虚拟主机名
ServerAlias ab.clin003.com ab.baicailin.com
#若有多个域名需要共用一个目录,可以使用这个指令
DocumentRoot D:/wwwroot/htdocs
#设置虚拟主机根目录路径
<Directory />
#配置目录权限
Options FollowSymLinks
#FollowSymLinks是规则运作所必需的,这是重写引擎的安全需要。主要用于重定向,伪静态应用。
AllowOverride All
#AllowOverride All是指明Apache服务器是否去找.htacess文件作为配置文件。设置为 all 让所有具有.htaccess 上下文的指令都允许出现在.htaccess文件中。如果设置为none,那么服务器将忽略.htacess文件。 参考:http://www.oschina.net/c/article/10493
Order allow,deny
#关于Apache的Order Allow Deny
Apache有一条缺省规则,“order allow,deny”本身就默认了拒绝所有的意思,因为deny在allow的后面;同理,“order deny,allow”本身默认的是允许所有;当然,最终判断结果还要综合下面的allow、deny语句中各自所包含的范围;(也就是说order语句后面可以没有allow、deny语句)。 “order allow,deny”代表先判断allow语句再判断deny语句,反之亦然。
判断原则分4步走——
1. 首先判断默认的,所谓“首先判断默认的”,就是判断“order deny,allow”这句,它默认是允许所有;
2. 然后判断逗号前的;
3. 最后判断逗号后的;
4. 最终按顺序叠加而得出判断结果。所谓“最终按顺序叠加而得出判断结果”,这是一个形象化了的说法,我把每一步判断都看作一个“不透明的图层”,然后一步步按顺序叠加上去,最终得出的“图像”就是判断结果。