改用Apache2.4一段时间了,一直没发现它和Apache2.2的有什么区别,一些基本配置都是差很少,直到前几天配置虚拟主机是才发现了一些小小的不一样php
一直以来我都是在htdocs目录下配置虚拟主机的,大致上使用的方法以下:html
<VirtualHost *:80> DocumentRoot "D:/www/Apache24/htdocs" ServerName localhost <Directory D:/www/Apache24/htdocs> DirectoryIndex index.html index.php Order Deny,Allow Allow from all </Directory> </VirtualHost>
可是最近我想在目录htdocs以外配置虚拟主机,仍是按照上面的老套路来配置,结果出现的403错误:linux
Forbidden
You don't have permission to access / on this server.
瞬间没了头绪,这是在Apache2.2所没有的出现过的状况啊,而后试着将虚拟主机的根目录改为htdocs目录之下,也就是windows
DocumentRoot "D:/www/Apache24/htdocs/test"
发现网站又能正常运行了,反复试了屡次都是同一的结果。而后我就想究竟是哪一个地方出现了问题,这个问题困扰了我几天,百度找了无数答案,大部分都是说目录的权限有错误,须要修改权限,或者是selinux设置的问题,但是我运行的环境是windows,因此这些状况也被排除在外;有些说是须要设置Allow from all ,也没有效果。api
经过查看错误日志,发现有那么一行:网站
AH01630: client denied by server configuration: D:/www/
可是个人Order指令设置都是正确的,这样我郁闷了一段时间,无心中发现了一篇文章描述Apache2.4与Apache2.2之间的一些指令的差别,恰好解决了个人问题,ui
其中的一些指令已经无效,如:this
Order Deny,Allow
Deny from all
Allow from al
取而代之的是: spa
Deny from all 变成 Require all denied Allow from all 变成 Require all granted
因而我将虚拟机配置为:日志
<VirtualHost *:80> DocumentRoot "D:/www/sphinx/api" ServerName www.mysphinx.com <Directory "D:/www/sphinx/api"> DirectoryIndex index.html index.php Require all granted </Directory> </VirtualHost>
发现仍是提示403错误,只不过此次的错误日志的错误变成:
AH01276: Cannot serve directory D:/www/sphinx/api/: No matching DirectoryIndex (index.html,index.php) found, and server-generated directory index forbidden by Options directive
这是由于里面的根目录里面没有index.html 或者 index.php,咱们能够添加index.html文件或者将设置改为以下:
<VirtualHost *:80> DocumentRoot "D:/www/sphinx/api" ServerName www.mysphinx.com <Directory "D:/www/sphinx/api"> Options FollowSymLinks Indexes Require all granted </Directory> </VirtualHost>
这样就算大功告成了,不过我敢确定Apache2.4与Apache2.2的区别不止于此,只是我尚未发现而已,期待进一步的发现。