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

ThinkPHP 3.x 自定義 404 頁面完整配置指南

     編輯:PHP 相關知識

前言

ThinkPHP 3.x 透過 EmptyController 與空操作 _empty() 機制,可優雅處理找不到控制器或方法的情況,導向自定義 404 頁面。

三步驟配置

步驟 1:建立 EmptyController

路徑:Home/Controller/EmptyController.class.php

<?php
namespace Home\Controller;
use Think\Controller;

class EmptyController extends Controller {
    // 空操作:找不到方法時觸發
    public function _empty() {
        header("HTTP/1.0 404 Not Found");
        $this->display("Public:404"); // 顯示 Public/404.html
    }

    // 空控制器預設動作
    public function index() {
        header("HTTP/1.0 404 Not Found");
        $this->display("Public:404");
    }
}
?>

步驟 2:建立公共基礎控制器 PublicController

路徑:Home/Controller/PublicController.class.php

<?php
namespace Home\Controller;
use Think\Controller;

class PublicController extends Controller {
    public function _empty() {
        // 重導向至靜態 404 頁面(需對應實際路徑)
        header("Location:/404.html");
        exit;
    }
}
?>

步驟 3:其他控制器繼承 PublicController

<?php
namespace Home\Controller;
// use Think\Controller; // 註釋掉原本繼承
class IndexController extends PublicController {
    public function index() {
        // 正常業務邏輯
    }
}
?>

關鍵點說明

  • HTTP 狀態碼:header("HTTP/1.0 404 Not Found") 告知瀏覽器/搜尋引擎此為 404 頁面
  • 顯示模板:$this->display("Public:404") 對應 Home/View/Public/404.html
  • 重導向方式:header("Location:/404.html") 需確保靜態頁面存在於網站根目錄
  • 繼承鏈:所有業務控制器 → PublicController → Think\Controller

進階:統一錯誤處理

在 Common/Conf/config.php 設定:

'ERROR_PAGE' => '/404.html', // 全域錯誤頁面
'SHOW_ERROR_MSG' => false,     // 生產環境關閉詳細錯誤

ThinkPHP 5.x/6.x 差異

  • TP5+ 使用異常處理機制:app/ExceptionHandle.php 或配置 exception_tmpl
  • 不再使用 EmptyController,改用路由完整匹配 + 異常捕獲
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved