改用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的區別不止於此,只是我尚未發現而已,期待進一步的發現。