Apache2.4配置過程中遇到的問題“404 Not Found”、“403 Forbidden”解決辦法
對Apache其實並不是非常瞭解,純小白,只是環境裡需要搭建一個簡單的站點,就使用了該服務,但是在配置過程中出現了403、404錯誤,經過好久才搞定,特記錄一下,以示提醒。
環境:
Ubuntu 16.04
Apache 2.4
Apache目錄:/usr/local/apache2
跳轉目錄:/home/test/apidoc
預期效果:
首頁還是使用Apache自帶的htdocs下的index.html
但是需要從該首頁,分別跳轉到其他目錄下的index.html
問題1:404 Not Found
修改/usr/local/apache2/htdocs
下的index.html檔案:
<html >
<body>
<div>
<a href="/home/test/apidoc">Test</a>
</div>
</body>
</html>
啟動Apache服務成功,訪問首頁,也可以訪問,但是點選跳轉的連結,就會提示:
Not Found
The requested URL /home/test/apidoc was not found on this server.
額,覺得好奇怪,目錄的確存在,而且/home/test/apidoc
下也存在index.html檔案,為啥從首頁訪問這種跳轉過去的就不行呢?
在度娘裡搜尋了半天,終於明白了大概的意思,是需要修改conf配置檔案,於是參考首頁的配置增加了一段配置:
<Directory "/home/test/apidoc">
Options Indexes
AllowOverride None
Require all granted
</Directory>
但是重啟服務後,訪問首頁,點選跳轉連結,問題依舊!
網上的解決方案,大部分都是說的要調整<Dicrectory>
下的許可權,最多是區分了2.2版本和2.4版本的不同,但是無論怎麼嘗試,問題都依舊,始終是返回404!
自己走了好多彎路,回頭來看官方文件,雖然是英文版本,但是通過“使用者指南-從URL對映到檔案系統”章節,可以發現,其實歸根結底,是我們在設定除DocumentRoot
Alias
標籤,所以修改上面的配置為:
Alias "/apidoc" "/home/test/apidoc"
<Directory "/opt/disk2/var/www/mvm_tembin_api/apidoc">
Options Indexes
AllowOverride None
Require all granted
</Directory>
然後修改/usr/local/apache2/htdocs/index.html
為:
<html>
<body>
<div>
<a href="/apidoc">Test</a>
</div>
</body>
</html>
重啟Apache服務後,再次訪問首頁,點選跳轉連結,成功,問題解決。
仔細想想,其實就是對於目錄許可權的控制問題,如果簡單來理解這個問題,還有一個辦法也可以解決問題,即不用修改配置檔案,而是在htdocs目錄下,增加連結檔案,因為htdocs目錄下的內容訪問是沒有問題,通過軟連結來實現:
ln -s /home/test/apidoc ./apidoc
配置檔案裡去掉Alias一段,然後別的不動,重啟服務,問題解決,效果一樣!
只是本人其實也不知道這種解決辦法,是否會引入其他問題或風險,如果有請大家指正。
問題2:403 Forbidden
遇到這個問題的根本原因還是在於許可權控制有誤,對根目錄和首頁所在目錄的許可權,保持預設,不要進行修改即可。