身正,言谨,谦虚,好学,修德养性!

Windows下Apache使用虚拟主机(多域名多站点)的设置

技术文档 12461浏览 0评论

在httpd.conf文件中找到ServerAdmin前面打上"#"(不含双引号),也就是把这段注释掉.
找到DocumentRoot "D:/Program Files/Apache2.2/htdocs"(这个是你安装apache的位置)把这段也打上"#",注释掉.//经过测试,如果没经过以上步骤,此方法同样有效。这个地方是这样的,下面开启了httpd-vhosts.conf,默认的httpd.conf默认配置失效,访问此IP的域名将全部指向vhosts.conf中的第一个虚拟主机,所以不管你注不注释,结果都是一样的。
假如,虚拟空间的各个站点都在D盘的wwwroot目录下,那么请添加这段
<Directory "D:/wwwroot">
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>


这个很重要,接下来,就把各个站点都放在wwwroot目录下,才能正常访问.这一段其实视具体情况而变//如果还有其它站点放在其它目录,如D:/www,可以再添加
<Directory "D:/www">                           
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
上面这段其实在改变网站的根目录,默认的根目录是在apache/htdocs中,我的想法是让指向这个IP的其它域名,指没有建立网站目录的,已经指向了这个IP的域名访问一个默认站点。我的操作是这样的,在httpd_vhosts.conf中加入如下代码:
#默认虚拟主机
<VirtualHost *:80>
    DocumentRoot d:\apache\htdocs
    ServerAdmin xxx@gmail.com
    ServerName localhost
</VirtualHost>
有的朋友会问,为什么不用加上面的
<Directory "D:/wwwroot">
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
因为httpd.conf中已经有了这段内容,当然这个目录你可以随便命名,那样就要再加这个目录代码了。
找到#Include conf/extra/httpd-vhosts.conf取消前面的#注释,使之生效
接着就可以到extra目录中,对httpd-vhosts.conf进行设置,添加站点
例子如下:
<VirtualHost *:80>
    DocumentRoot e:\www\discuz\bbs
    ServerName bbs.xxxx.com
</VirtualHost>
//第二个虚拟主机,具体参数自己修改
<VirtualHost *:80>
    DocumentRoot e:\www\site    //第二个虚拟主机所在目录
   ServerName www.xxxx.com     //域名
</VirtualHost>

如果,需要用到rewrite的html静态功能,
请在httpd.conf文件中,找到#LoadModule rewrite_module modules/mod_rewrite.so取消掉前面的#注释,使mod_rewrite.so模块生效并且把所有的
AllowOverride None
更改为
AllowOverride All

参考:http://round08.blogbus.com/logs/29168410.html

转载请注明:自由的风 » Windows下Apache使用虚拟主机(多域名多站点)的设置

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址