1. 程式人生 > >Apache2.4配置過程中遇到的問題“404 Not Found”、“403 Forbidden”解決辦法

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

遇到這個問題的根本原因還是在於許可權控制有誤,對根目錄和首頁所在目錄的許可權,保持預設,不要進行修改即可。