什麼是403禁止的錯誤以及如何解決(8個解決方案的解釋)

what-is-403-forbidden-error-and-how-to-fix-it-768x478

全方位學 WordPress – 從架站到整合行銷

大叔從1999年開始學習使用Linux來架站寫PHP程式,那時用Apache來架站,如果網頁的權限設定不對,就很常會出現Forbidden的錯誤訊息,這個訊息是來自apache2.conf的

ErrorDocument 403 /error/HTTP_FORBIDDEN.html.var

預設的錯誤訊息設定。

Site-forbidden

後來我比較常用IIS後,寫的ASP.Net程式如果權限不對也常會出現下面403的錯誤訊息。

這個錯誤訊息的設定可以從Internet Information Services (IIS) 管理員的錯誤網頁進去設定,預設錯誤網頁訊息的位置是在%SystemDrive%inetpubcusterr,像我的機器中還會有en-US跟zh-TW兩個語系的資料夾,看看zh-TW中的檔案可以看到403.htm到403-19.htm等各種不同的權限不對的問題訊息。

image
image
image

403 Forbidden 是HTTP協定中的一個HTTP狀態碼(Status Code)。403狀態碼意為伺服器成功解析請求但是客戶端沒有存取該資源的權限。當您訪問空的網站目錄或具有權限錯誤的特定頁面時,可能就會發生這種情況。一開始我在弄工作達人這個Wordpress部落格時,因為不熟悉Wordpress這個PHP套件,所以也是發生了一些403錯誤網頁的顯示,搞懂了權限設定後,才恢復正常,但也因為沒什麼時間,所以這14年來沒有分享過這類的訊息,仔細想想,如果你或你的訪客在你的網站上遇到此錯誤,則有必要知道http 403解決方法,否則您可能會失去寶貴的流量。由於其原因各不相同,解決403禁止錯誤的方法有很多。

因此,這一次大叔將解釋不同類型的 403 禁止錯誤及其可能的原因,並提供八種修復 403 禁止錯誤的方法,喜歡的話就幫我分享,謝謝。

403 禁止錯誤碼

403 是一個HTTP狀態碼,這是 web 伺服器給客戶端瀏覽器的標準回應碼,出現錯誤的時候,這些代碼會傳達問題的原因這樣使用者可以知道為什麼這個網頁無法載入。

對於 403 錯誤碼,這個訊息在伺服器端本身就會因為採用的軟體的預設設定或是特製設定而有所不同,在 web 客戶端也有很多種不同的變化,有些甚至不包含 403 碼本身,這裡有一些 403 錯誤訊息的範例:

  • Forbidden: You don’t have permission to access [directory] on this server
  • HTTP Error 403 – Forbidden
  • Error 403 – Forbidden
  • 403 forbidden request forbidden by administrative rules
  • 403 Forbidden
  • Access Denied – You don’t have permission to access
  • Error 403
  • HTTP 403
  • Forbidden
  • 403錯誤
  • 403故宮
  • 403禁止的錯誤
  • 403禁止的Nginx
  • 403禁止訪問被拒絕
  • 錯誤403禁止
  • 被禁止
  • 禁止使用HTTP 403
  • Nginx 403禁止
  • 403 – forbidden: access is denied.

有些範例我沒有翻譯成中文,因為這些訊息會隨著web 伺服器是否支援中文語系,或是你的本機採用何種語系而定,但基本上如果有看到403的話都是這一類的,除非內容沒有403這個代碼時,要辨識的話就會稍微有點困難。

Hostinger有一部新的Youtube視訊影片《How to Fix 403 Forbidden Error》是英文的,可以配合我們整篇的中文閱讀操作,如果有問題不懂的可以留言討論。

403 禁止錯誤的原因

通常,403 禁止錯誤是客戶端錯誤的存取設定造成的,而這也表示你要自己解決這個問題。

這些錯誤的常見原因就是檔案或資料夾權限的設定,這些設定控制檔案或資料夾的讀取、寫入或執行。

在這種情況下有幾種可能性:網站所有者編輯了設定,使您無法存取資源,或者他們沒有設定好正確的權限。

※2022/03/09 後記

這個網站所有者編輯了設定,有一個可能的原因就是他做了Hotlink Protection(圖片防盜),所以如果是這樣你就會看到http 403的錯誤了。

這在Hostinger是如何設定的?可以看一下下圖的Hotlink Protection,點擊進去

你就可以看到下圖示不是有做圖片防盜或譯做熱連結保護的設定,如果是別人的網站這樣設定,你當然去連人家的圖片就會看到http 403的錯誤了,如果是你連自己的網站有這樣的錯誤,你可以考慮在這個設定中輸入你的網址來允許連結圖片。

第二個常見原因是 .htaccess 檔案中的設定損壞或不正確,在您對檔案進行更改後,可能就會發生這種情況,幸運的是,只需建立一個新的 .htaccess 檔案即可輕鬆解決該問題。

第三個常見原因是隱藏文件/錯誤的URL,隱藏的文件不應該公開存取,因此伺服器限制了公開存取,當使用者嘗試存取隱藏文件時,將引發http 403禁止錯誤,同樣,對於某些伺服器,如果使用者有意或無意輸入無效的URL,則可能會出現403禁止錯誤訊息。它可能因伺服器而異,並且取決於使用者輸入的內容,例如,如果您輸入文件夾目錄而不是文件路徑,則可能會看到錯誤。

第四個常見原因是進用IP和IP網段,錯誤403主要是由於身份驗證錯誤引起的,在Other – IP Manager裡如果有設定阻止的IP或是IP網段,而你又是使用這個IP或是IP網段連該網站,就很可能產生403錯誤,在這種情況下,請驗證IP Manager中的規則以確保您沒有阻止自己的IP範圍,如果您需要阻止某些使用者存取,則IP規則會很有幫助。

除了這幾個常見原因之外,還有一些其他可能錯誤的觸發點:

  • 缺少索引頁 – 網站的首頁不是 index.html 或是 index.php
  • 錯誤的 WordPress 外掛 – 如果WordPress 外掛設定錯誤或是與另一個外掛不相容,就有可能引起錯誤。
  • 錯誤的 IP 地址 – 域名指向錯誤或是舊的 IP位址,這位址現在服務的網站阻止你的存取。
  • 惡意軟體感染 – 惡意軟體感染可能會導致.htaccess檔案不斷損壞,在還原檔案之前,您需要刪除惡意軟體。
  • 新的網頁連結 – 網站擁有者可能已經更新網頁連結,快取的版本跟現在的不同。

如何修正錯誤403 禁止訊息

由於錯誤 403 forbidden 與檔案存取權限密切相關,因此這將是以下修復方法的主要重點,也就是說,還有其他方法可以解決此問題,例如清除 Web 瀏覽器快取或掃描惡意軟體。

讓我們更深入地了解解決 HTTP 403 Forbidden 錯誤的每一種可用方法。

請注意這裡所提到的步驟主要針對 WordPress來講,但是這些步驟也可以用到其他網站上。

1. 檢查 .htaccess 檔案

可能你對 .htaccess 檔案不太熟,通常在網站的目錄裡它會設成隱藏的,然而,如果你是用 Hostinger File Manager (當然你得先租用Hostinger的主機),預設 .htaccess 檔案可以在你的 public_html 目錄中找到,可以按照以下步驟來找到這個檔案:

  1. 在 hPanel 儀表板上找到File Manager
    hPanel-file-manager-1
  2. 開啟 public_html 目錄來找 .htaccess 檔案。
    hPanel-htaccess-1024x452

如果你是使用 cPanel,按照下列步驟操作:

  1. 在 cPanel 裡找到 File Manager
    cPanel-file-manager-1
  2. public_html 目錄中,找到 .htaccess 檔案。
    cPanel-htaccess-1
  3. 如果你沒有看到 .htaccess 檔案,點擊螢幕右上角的 Settings 勾選 Show Hidden Files (dotfiles) 選項。
    cPanel-hidden-files

.htaccess 檔案是伺服器的設定檔,主要是透過更改 Apache Web 伺服器 設定來作業。

儘管預設情況下 .htaccess 可以在大多數的網站裡找到,但如果你的網站沒有這個檔或是檔案被無意地刪除了,那你就需要手動建立 .htaccess 檔案。

如果你找到了,就照下面的步驟來檢查是不是錯誤的檔案設定造成這個錯誤:

  1. 右鍵點擊 .htaccess 檔案然後選擇下載(Download)來建立備份。
    htaccess-download
  2. 備份好了後,刪除( delete) 檔案。
    htaccess-delete
  3. 測試存取你的網站,如果運作正常,這表示是 .htaccess 檔案 壞掉了。
  4. 要產生新的 .htaccess 檔案, 登錄到你的 WordPress 控制台,然後點擊 設定 -> 永久連結
  5. 不用作任何改變,點擊頁面下面的 儲存設定 按鈕。
    image

這樣你的網站就可以產生新的 .htaccess 檔案,如果沒有解決問題,再試試看下面的方法。

2. 重設檔案和目錄權限

會碰到http 403 錯誤禁止訊息的另一個原因就是錯誤的檔案或目錄權限,通常,當檔案建立的時候,這些檔案都會有特定的預設權限,這個設定控制你如何讀取、寫入及執行這些檔案。

 

專業密技
如果你是使用 Hostinger,有一個特別的工具可以讓你一鍵處理所有這一類的權限問題,在控制台上方搜尋或下拉捲軸到底部看見 Other 進去 Fix File Ownership
image

image
這個工具可以節省你載入的時間,還有幫你還原所有檔案根目錄的預設權限。

×

你也可以使用 FTP 軟體來編輯檔案和資料夾的權限,你可以照著下面步驟操作:

  1. 設定 FTP 軟體然後連線到你的網站。
  2. 一旦連線,右鍵點擊 public_html 並且選擇檔案屬性(File Attributes)
    FTP-file-attributes-1
  3. Numeric value 欄位裡輸入權限 755,勾選 Apply to directories only,然後按 OK 按鈕。

    檔案權限的數值一般的作法是資料夾使用755,靜態的內容使用644,動態的內容或程式使用700。

    FTP-change-file-attributes

     

  4. 在更新資料夾權限後,重覆步驟 2 步驟 3,但現在是在Numeric value欄位中輸入 644 ,然後勾選 Apply to files only 選項。
    FTP-changes

完成後,測試存取你的網站看看403禁止錯誤是否解決。

3. 停用 WordPress 外掛

如果前面兩個方法都不能解決,那麼錯誤的原因很可能就是不相容或是錯誤的外掛,在這個步驟裡,會試著停用外掛來檢查這樣做是否可以修正403禁止錯誤。

建議立即停用所有外掛,而不是個別外掛一個個地處理,照著這個方法,你就能檢測到問題並且獲得解決,這裡有必須要做的:

  1. 透過FTP存取你的主機帳戶或是使用主機帳戶的檔案管理員,進到 public_html -> wp-content 資料夾裡。
  2. 找到 plugins 資料夾。
    plugins-1
  3. 將資料夾改成另一個名字像是 “disabled-plugins” 來停用所有外掛。
    Disabled-plugins

測試存取網站,如果403禁止錯誤不再出現,有問題的外掛就是錯誤的根源。

把資料夾名稱改回 plugins,現在必須從WordPress控制台中一個個停用外掛,檢查網站是否可以執行,用這個方法,你就能夠查到錯誤的外掛。

當你找到的時候,如果需要更新這個外掛或是安裝新的,如果錯誤訊息依舊,你可能需要聯繫你的主機廠商來協助。

4. 上傳索引頁

檢查網站首頁名稱是不是叫 index.html 或是 index.php,如果不是,那麼有兩種作法可以選擇,第一個也是最簡單的就是把首頁名稱改成 index.html 或是 index.php

但是,如果你想要保持現在的首頁名稱,上傳首頁到你的 public_html 目錄然後建立現有首頁的轉址,這裡有一些步驟可以照著做:

  1. 上傳 index.html 或是 index.php 檔案到你的 public_html 目錄,使用你的主機所用的檔案管理員或是FTP來做。
  2. 打開 .htaccess 檔案。
  3. 插入程式碼來把 index.php 或是 index.html 檔案轉到你現在的首頁,不要忘記取代ㄑhomepage.html

    成頁面真正的名稱。

Redirect /index.html /homepage.html

5.編輯檔案所有權限

如果你使用Linux或是 VPS 主機,不正確的檔案所有權也會引起 403 禁止錯誤,一般檔案和資料夾要指定給一個 Owner、一個 Group 或是這兩者。

請記住你需要 SSH 的存取權限來修改 Linux或是 VPS主機檔案的所有權,你也需要一個 SSH 終端機來連線到 VPS 伺服器。

將 SSH連到 Web伺服器後,使用 SSH命令檢查檔案所有權:

ls -1 [file name]

結果看起來像這樣:

-rwxrw-rw- 1 [owner][group] 20 Jul 20 12:00 filename.txt

看看擁有者(owner)跟群組(group)部份,正確的所有權應是你主機帳戶的名稱,如果你發現有不一樣的所有權,使用 chown 這個Linux命令來更改檔案所有權,chown基本的語法是這樣:

chown [owner][:group] [file name]

例如,如果你的使用者名稱是 Hostinger 使用像這樣的語法:

chown Hostinger filename.txt

如果你使用 SSH 不習慣,可以聯繫 Hostinger的支援團隊尋求協助。

6. 驗證 A 紀錄

403 禁止錯誤也可能發生在域名指向錯誤的 IP位址,這樣你就會沒有權限可以檢視內容,因此請仔細檢查你的域名指向正確的 IP 位址。

要檢查域名是否指向正確,在 hPanel 上存取 DNS Zone Editor:

  1. 登錄到你的 hPanel
  2. 進到 Advanced 這個部份然後點擊 DNS Zone Editor。
    image
  3. 可以看到 DNS紀錄清單,看一下 Type欄位有 A的紀錄。
    DNS-records-1
  4. 檢查Check the IP address on the Content 欄位的 IP位址。
  5. 如果指向錯誤的 IP位址,點擊 Edit 來更改,如果已經完成就按 Update
  6. 如果你沒有發現正確的紀錄,在 Manage DNS records 這個部份建立一筆新的,確定你在 Type 欄位這裡選了 A,然後在 Points to 這裡新增正確的 IP位址,然後按 Add Record
    Manage-DNS-records

 

如果你最近有從一台 Web主機轉移到另一台,也忘了更改你的名稱伺服器,你的域名可能還是指向舊的 Web主機。

當舊主機取消你的帳號,就會造成 403 錯誤狀態碼的產生,因此,要確定你的域名指向正確的 web主機。

7. 掃描網站惡意軟體

惡意軟體可能是另一個 403錯誤的原因,如果你的 WordPress 網站遭受惡意軟體感染,它會一直注入不想要的程式碼到 .htaccess 檔案中,而且即使已經使用我們前面提到的第一個方法來修正 .htaccess 檔,錯誤還是持續存在。

掃描你的網站來辨識惡意軟體,Wordpress有很多安全性的外掛,像是 Sucuri 或是 Wordfence,可以這樣做。

Wordfence-1024x432

 

如果你發現你的網佔有惡意軟體,有兩個方法可以解決這個問題。

大部分的 WordPress安全性外掛像是 WordFence 可以移除惡意軟體,當外掛找到所有惡意軟體的檔案,你就會看到這些檔案的可操作選項,像是刪除或是還原等的功能選項。

另一個方法是使用備份檔案來還原網站,如果你沒有整個網站的備份檔案,也可以使用資料庫備份來還原。

8. 清除網站歷史紀錄/暫存

瀏覽器的暫存跟 cookies 也可能造成 403 錯誤,暫存儲存的資料會讓網站在下次你瀏覽的時候可以載入快一點。

但是,也有可能網站的連結已經更新,實際的網頁連結跟暫存的版本現在已經不同。

另一個可能是 cookie 的錯誤 ,在你平常登錄的網站可能就有這種狀況,最近嘗試登錄顯示了這個錯誤訊息。

清除網站暫存跟 cookie應該可以解決這個問題,注意清除瀏覽器暫存會造成下一次拜訪網暫時會花很多時間因為瀏覽器會請求網站的所有檔案,清除 cookie也會讓你從已登錄的網站被登出。

照著下面步驟來清除 Google Chrome 上的暫存跟 cookie:

    1. 點擊右上角三個點點的按鈕然後選擇設定(Settings)
    2. 找到 隱私權和安全性的部份然後按清除瀏覽資料
      image
    3. 使用下拉選單選擇時間範圍來刪除資料,接著勾選 Cookie和其他網站資料以及快取圖片和檔案選項
      image
    4. 點擊清除資料

當你完成所有步驟,再次拜訪網站如果需要登錄就這樣做。

如果這樣做或是其他的方法都沒有用,建議你跟 Hostinger 的支援團隊透過線上聊天來解決這個問題。

9. 禁用IP和IP網段檢查

使用Hostinger虛擬主機的朋友可以從管理界面的Other進入,在下面畫面的Block an IP Address處填寫禁用的IP或是IP網段

總結一下

403 禁止錯誤訊息禁止你存取網站或是網頁時,會讓人感到很受挫,這可能是因為錯誤的檔案權限造成的,但也有其他可能的原因,像是錯誤的索引頁、錯誤的外掛或甚至是惡意軟體的感染。

要找到 403 錯誤的真正原因可能很棘手,但是照著我們所列的方法步驟去做,相信可以讓你的網站運作正常。

總結一下,在你的 WordPress 網站上如果碰到 403 錯誤訊息的話這裡有幾個行動方案可以去做:

  1. 檢查 .htaccess 檔案。
  2. 重設檔案和目錄權限。
  3. 停用 WordPress 外掛。
  4. 上傳索引頁。
  5. 編輯檔案所有權。
  6. 驗證 A 紀錄。
  7. 移除惡意軟體。
  8. 清除瀏覽器的歷史紀錄和暫存。

403 禁止錯誤只是HTTP 錯誤碼的一種,你可能也會碰到其他客戶端的錯誤像是 404 錯誤或是 504 閘道逾時

鼓勵你繼續學習有關這些錯誤的處理,這樣當錯誤出現在你的網站上時就會知道如何處理這些錯誤。

hostinger上人氣最夯教學文章:

  1. 如何設定DNS好讓域名來指向我的Hostinger虛擬主機
  2. 2021年18個用來找工作的任務發布外包平台推薦
  3. 什麼是403禁止的錯誤以及如何解決(8個解決方案的解釋)
  4. 【普考必考】每個使用者都應知道的 Linux 基本命令
  5. 28個最厲害的免費學習程式碼設計網站

感謝你看到這裡,很快就可以離開了,但最好的獎勵行動就是按一下幫我分享或留言,感恩喔~

點我分享到Facebook

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。