捣鼓了一个下午关于配置apache的多个虚拟根目录的设置,几经折腾也没成功,看了网上很多资料也没用。遇到了一个又一个的问题,晚上继续,在咱不懈努力下,一切困难都是神马浮云,O(∩_∩)O哈哈~……谨以此文献给所有遇到这些问题的弟兄们!!不足之处,请加以指点,以下只是我处理的方式:
1、 Apache支持配置多个虚拟目录,有的人可能直接在httpd.conf(该文件在:Apache2\conf的目录里)里面配置,今天我是直接配置在:httpd-vhosts.conf(该文件在:Apache2\conf\extra目录里)里。在httpd-vhosts.conf里的文件最后面加入了以下代码:
<VirtualHost *:80>
DocumentRoot "d:/web"
ServerName idc.d1v1.com
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "d:/www"
ServerName localhost
</VirtualHost>
我是分了两个目录,分别在D盘得web文件夹和D盘的www文件夹。
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>
DocumentRoot"/www/docs/dummy-host.localhost"
ServerName dummy-host.localhost
ErrorLog "logs/dummy-host.localhost-error_log"
CustomLog"logs/dummy-host.localhost-access_log common"
</VirtualHost>
这里有doucumnetroot指向了某个具体的目录,但是实际上我们的电脑上没有该目录,所以,你索性把这段代码去掉即可,不会影响,这段代码只是给我们演示如何加虚拟目录。当然,你要加的虚拟目录也得先建好文件夹,否则也会无法启动apache。
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,哈哈,解决了。