1. 程式人生 > >ThinkPHP3.2.3:空模組、空控制器、空操作,跳轉到錯誤404頁面

ThinkPHP3.2.3:空模組、空控制器、空操作,跳轉到錯誤404頁面

【演示準備】

    首先下載了一個ThinkPHP3.2.3,目錄結構如下:(只有Home模組、Index控制器、index操作方法)

    然後找了一個簡易的錯誤404頁面404.html放到了根目錄:

【空模組】

訪問一個不存在的模組Admin,錯誤提示:

 修改根目錄下 ThinkPHP/Library/Think/Dispatcher.class.php 178行程式碼:

// E(L('_MODULE_NOT_EXIST_').':'.MODULE_NAME);
header("Location: /404.html");
exit();

再次訪問空模組:

【空控制器】

訪問Home模組不存在的控制器User,錯誤提示:

檢視根目錄下 ThinkPHP/Library/Think/App.class.php 101行前後程式碼:

通常的處理方法是:在當前模組下新建一個Empty控制器,在裡面做404跳轉(A方法例項化Empty控制器)。

EmptyController.class.php:

<?php
namespace Home\Controller;
use Think\Controller;
class EmptyController extends Controller {
    public function index() {
        header("Location:/404.html");
        exit();
    }
}

再次訪問空控制器:

【空操作】

訪問Home模組下Index控制器不存在的test操作方法,錯誤提示:

 

檢視根目錄下 ThinkPHP/Library/Think/Controller.class.php 170行前後程式碼: 

通常的處理方法是:在當前模組下新建一個Public控制器(繼承Controller),在裡面定義_empty方法跳轉404頁面, 然後其他控制器再繼承Public。

PublicController.class.php:

<?php
namespace Home\Controller;
use Think\Controller;
class PublicController extends Controller {
    public function _empty() {
        header("Location:/404.html");
        exit();
    }
}

Index控制器繼承Puclic:

再次訪問空操作方法: