ThinkPHP3.2.3:空模組、空控制器、空操作,跳轉到錯誤404頁面
阿新 • • 發佈:2018-12-13
【演示準備】
首先下載了一個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:
再次訪問空操作方法: