larkinwang 发表于 2014-4-10 01:37:51

apache配置多个虚拟目录操作及问题解决,httpd-vhosts.conf起作用

关于apache配置多个虚拟目录操作及问题解决,
捣鼓了一个下午关于配置apache的多个虚拟根目录的设置,几经折腾也没成功,看了网上很多资料也没用。遇到了一个又一个的问题,晚上继续,在咱不懈努力下,一切困难都是神马浮云,O(∩_∩)O哈哈~……谨以此文献给所有遇到这些问题的弟兄们!!不足之处,请加以指点,以下只是我处理的方式:
1、 Apache支持配置多个虚拟目录,有的人可能直接在httpd.conf(该文件在:Apache2\conf的目录里)里面配置,今天我是直接配置在:httpd-vhosts.conf(该文件在:Apache2\conf\extra目录里)里。在httpd-vhosts.conf里的文件最后面加入了以下代码:
   <VirtualHost *:80>      ServerAdmin webmaster@dummy-host2.localhost         DocumentRoot "d:/web"         ServerName idc.d1v1.com
   </VirtualHost>
<VirtualHost *:80>      ServerAdmin webmaster@dummy-host2.localhost         DocumentRoot "d:/www"         ServerName    localhost</VirtualHost>我是分了两个目录,分别在D盘得web文件夹和D盘的www文件夹。访问时分别是:http://idc.d1v1.com   和http://localhost
2、 这里的注意一点,关于idc.d1v1.com 指向web目录;localhost指向www目录。然后,得找到Windows/system32/drivers/etc/hosts文件打开(用记事本打开),将原来的127.0.0.1 localhost       改为:127.0.0.1   localhost 127.0.0.1   idc.d1v1.com
然后,保存。3、 其次,我们在httpd-vhosts.conf 文件中修改的内容要起作用,要配置httpd.conf文件。启用httpd-vhosts.conf文件的这个模块。在httpd.conf文件中找到如下这句语句:#Include conf/extra/httpd-vhosts.conf,把这语句前面的#号去掉,否则httpd-vhosts.conf里的内容不会起作用。去掉之后,保存,重启apache。
4、 这个时候,我们可能会发现apache的服务无法启动。我也在网上发现的有人问了这样的问题(即:为什么我的机子只要把Include conf/extra/httpd-vhosts.conf前面的#号去掉就起动不APACHE),经过仔细查看httpd-vhosts.conf这个文件,你会发现有以下这段语句:<VirtualHost*:80>    ServerAdmin webmaster@dummy-host.localhost    DocumentRoot"/www/docs/dummy-host.localhost"    ServerName dummy-host.localhost    ServerAlias www.dummy-host.localhost    ErrorLog "logs/dummy-host.localhost-error_log"    CustomLog"logs/dummy-host.localhost-access_log common"</VirtualHost>
这里有doucumnetroot指向了某个具体的目录,但是实际上我们的电脑上没有该目录,所以,你索性把这段代码去掉即可,不会影响,这段代码只是给我们演示如何加虚拟目录。当然,你要加的虚拟目录也得先建好文件夹,否则也会无法启动apache。5、 好,顺利解决上述问题,现在apache也顺利启动了。这个时候我访问http://website.cn是可以的,但是访问:http://localhost/ 的时候提示了另一个错误:         Youdon't have permission to access / on this   意思说我没有权限访问,被拒绝了!靠,哎,遇到问题就得想办法解决。网上找,经过搜索,看到一哥们也遇到这问题,心里一阵窃喜,O(∩_∩)O哈哈~,可是按照他的方法一操作,傻眼了,还是不行。他们的办法是:找到httpd.conf文件中如下代码:<Directory/>   Options FollowSymLinks   AllowOverride None   Order deny,allow   deny from all   Satisfy all</Directory>然后试着把deny from all中的deny改成了allow,保存后重起了apache,我也这样操作,还是不行(有人建议把denyfrom all 去掉)。这时候,头大了,开始有点烦躁了,不过马上静下心来,把httpd.conf文件看了一遍又一遍,估计在看几遍也能背了,^_^;我开始把httpd.conf这个文件中的deny都改成了allow,保存,重启apache,还是不行。真的头大了。左思右想,查看apache配置文件,手册等等。最后还是想到了上述这段语句:<Directory/>   Options FollowSymLinks   AllowOverride None   Order deny,allow   deny from all   Satisfy all</Directory>最后,把这段语句去掉,保存,重启apache后,打开两个地址试了一下,OK,哈哈,解决了。6、 最后,总结:遇到问题还是得细心的去查找问题,通过网上搜索,看帮助文档。或者官方的技术文档。不过可以看看apache官方的一些问题处理:https://issues.apache.org/bugzilla/buglist.cgi?quicksearch=forbidden。
页: [1]
查看完整版本: apache配置多个虚拟目录操作及问题解决,httpd-vhosts.conf起作用