首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 使用 header() 自訂 404 錯誤頁面完整指南

     編輯:PHP 相關知識

什麼是 404 錯誤頁面?

404 頁面是當使用者請求的資源在伺服器上不存在時回應的狀態碼。它不僅告訴搜尋引擎「這個頁面已不存在」,也能友善地引導使用者前往網站其他頁面,避免流失訪客。對於沒有 Apache 設定權限(如虛擬主機用戶)的開發者,透過 PHP 內建的 header() 函式即可輕鬆實作自訂 404 頁面。

方法一:直接輸出 404 狀態與簡易訊息

最基本的做法是發送正確的 HTTP 標頭,再輸出提示文字:

<?php
header("HTTP/1.1 404 Not Found");
header("Status: 404 Not Found");
echo '頁面不存在 (404)';
exit();
?>

重點說明:

  • HTTP/1.1 404 Not Found:標準 HTTP 回應列,確保瀏覽器與搜尋引擎正確識別狀態。
  • Status: 404 Not Found:相容 CGI/FastCGI 環境的備用標頭。
  • 務必在輸出任何內容之前呼叫 header(),否則會觸發「Headers already sent」警告。
  • exit() 防止後續程式碼繼續執行。

方法二:載入獨立的 404 錯誤頁面模板

將錯誤頁面邏輯與樣式分離,維護更容易:

<?php
header("HTTP/1.1 404 Not Found");
header("Status: 404 Not Found");
include(__DIR__ . "/../../404.htm"); // 建議使用絕對路徑
exit();
?>

404.htm 可包含完整 HTML 結構、網站導覽、搜尋框、網站地圖連結等,提升使用者體驗。

替代方案:Apache .htaccess 設定(若有權限)

若擁有 Apache 覆寫權限,使用 .htaccess 更簡潔且效能稍佳:

ErrorDocument 404 /404.html

或直接修改 httpd.conf:

ErrorDocument 404 /404.htm

這樣 Apache 會直接處理 404 回應,不經由 PHP 解析器,減少資源消耗。

最佳實踐建議

  1. 統一入口:在框架或應用程式的前端控制器統一處理 404 邏輯。
  2. 記錄日誌:記錄 404 請求的 URL、Referrer、User-Agent,定期分析修正死連結。
  3. 友善設計:提供站內搜尋、熱門分類連結、回首頁按鈕,降低跳出率。
  4. 測試驗證:使用 curl -I 或瀏覽器開發工具確認回應碼確為 404,而非 200 或 302。

常見錯誤避坑指南

錯誤做法正確做法
未送出 404 標頭,直接 include 頁面務必先送 header("HTTP/1.1 404 Not Found")
使用 header("Location: /404.php") 導向這會回傳 302 Found,搜尋引擎不會視為 404
在輸出 HTML 後才呼叫 header()header() 必須在任何輸出之前執行

掌握這些技巧,即使在受限的主機環境下,也能專業地處理 404 錯誤,兼顧 SEO 與使用者體驗。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved