前言:HTTP 狀態碼是伺服器給用戶端的「診斷報告」
當瀏覽器向 Web 伺服器發送請求,伺服器回應三位數狀態碼。IE 將其轉為人類可讀的錯誤頁面。看懂代碼,即知問題在「客戶端、伺服器、還是網路中間」。
三大高頻錯誤代碼深度解析
1. 404 Not Found —— 最常見的「找不到資源」
- 含義:伺服器找不到請求的 URI 對應資源
- 常見原因:
- 網址輸入錯誤(拼字、大小寫、路徑層級)
- 頁面已移動/刪除/重命名,未設定 301 重導向
- 動態頁面參數錯誤導致查無資料
- 虛擬主機/站點綁定錯誤、應用程式集區停止
- 用戶端對策:
- 檢查網址拼字、嘗試移除尾端路徑逐層往上找
- 使用站內搜尋、網站地圖、Google `site:domain.com 關鍵字`
- 網頁快取:`cache:URL`、Wayback Machine、Textise dot iitty
- 網站管理端修復:
- 設定自定義 404 頁面(友善導航、搜尋框、網站地圖連結)
- 建立 301 永久重導向對應舊 URL
- 監控 404 日誌,修復斷連結
2. 403 Forbidden —— 「有權限才能進」的拒絕訊號
- 含義:伺服器理解請求但拒絕授權存取
- 常見原因:
- 目錄瀏覽被禁用且無預設文件
- IP 封鎖/地理封鎖/WAF 規則觸發
- 檔案/目錄權限錯誤(Linux `chmod 755`、Windows IIS_IUSRS 讀取權限)
- 需登入/會員權限、付費牆、API Key 缺失/過期
- .htaccess / web.config `deny from all` / `authorization` 規則
- 用戶端對策:
- 嘗試登入/註冊會員
- 確認網址無誤、嘗試 HTTPS
- 更換 IP/VPN(若為地理封鎖)
- 聯繫網站客服確認權限
3. 500 Internal Server Error —— 伺服器內部崩潰
- 含義:伺服器遇到未預期狀況,無法完成請求
- 常見原因:
- 程式碼邏輯錯誤(NullReference、除零、陣列越界)
- 資料庫連線失敗/查詢逾時/死結
- 第三方 API 呼叫失敗、超時
- 設定檔語法錯誤、缺少必要模組/套件
- 資源耗盡(記憶體、執行緒、檔案控制代碼、磁碟空間)
- CGI/FastCGI/PHP-FPM/應用程式集區當機
- 用戶端無解:純屬伺服器端問題,只能等待管理員修復
- 管理端排查:
- 查看應用程式日誌、Web 伺服器錯誤日誌、事件檢視器
- 啟用詳細錯誤頁面(開發環境)、關閉生產環境詳細錯誤(資安)
- 重啟應用程式集區/服務、回滾最近部署
延伸:其他常見代碼速查
| 代碼 | 名稱 | 核心含義 | 典型場景 |
| 301 | Moved Permanently | 永久重導向 | SEO 遷移、HTTPS 強制、網域合併 |
| 302 | Found | 暫時重導向 | 登入導向、A/B 測試、短網址 |
| 304 | Not Modified | 快取有效 | 瀏覽器快取、CDN 邊緣快取 |
| 400 | Bad Request | 請求格式錯誤 | 標頭過大、Cookie 損壞、參數驗證失敗 |
| 401 | Unauthorized | 未認證/認證失敗 | API Token 過期、Basic Auth 失敗 |
| 429 | Too Many Requests | 速率限制 | API 配額、爬蟲防護、DDoS 緩解 |
| 502 | Bad Gateway | 上游伺服器無效回應 | Nginx 代理後端掛掉、PHP-FPM 當機 |
| 503 | Service Unavailable | 服務暫時不可用 | 維護模式、過載、健康檢查失敗 |
| 504 | Gateway Timeout | 上游回應逾時 | 後端處理過久、資料庫慢查詢、跨區域呼叫 |
開發者工具一鍵看穿
F12 → Network → 任一請求 → Headers → Status Code,即可看到真實代碼(IE 自訂錯誤頁面可能掩蓋原始代碼)。
讀懂 HTTP 狀態碼,是前後端除錯、SEO 優化、資安防禦的基礎語言。下次看到 404/403/500,不再恐慌,精準定位、對症下藥。