TP3.2框架,實現空模塊、空控制器、空操作的頁面404替換||同步實現apache報錯404頁面替換


一,前言

  一.1)以下代碼是在TP3.0版本之后,URL的默認模式=》PATHINFO的前提下進行的。(通俗點,URL中index.php必須存在且正確)

代碼和講解如下:

1、空模塊解決:http://localhost:8095/index.php/Home/index/index 輸入http://localhost:8095/index.php/Home23/index/index  會報錯,解決

-》》》 1)在公共配置文件添加:

  'MODULE_ALLOW_LIST'    =>    array('Home','Admin'),
  'DEFAULT_MODULE'       =>    'Home',

2)空模塊要結合下面的2和3,一起,所以要看完哦。

上面的'DEFAULT_MODULE'  很重要, 因為當你模塊名寫錯的時候,tp的基類已經把錯的模塊名當成了控制器名,就會變成Home/Home23,也時候就是走的空控制器了

 

2、空控制器解決:

1)在Admin和Home下面的Controller文件夾下分別新增EmptyController.class.php文件,里面寫一個_empty()方法。 這兩個控制器都要繼承Controller.class.php.

代碼:

namespace Home\Controller;
use Think\Controller;
/**
 * 空模塊,主要用於顯示404頁面,請不要刪除
 */
class EmptyController extends Controller{
    public function _empty(){
        $src = '/Static/404/404.jpg';
        echo "<img src=".$src.">";
    }
}

3、空操作解決:

在Home和Admin模塊下的普通控制器的父級控制器里面寫一個_empty()方法目的就是每個控制器都繼承了該_empty()方法,只要是空操作就跳轉到_empty()方法里面。

代碼如下:

namespace Home\Controller;
use Think\Controller;
/**
 * 父類控制器空操作,主要用於子類繼承
 */
class HomeController extends Controller{
    public function _empty(){
        $src = '/Static/404/404.jpg';
        echo "<img src=".$src.">";
    }
}

至此,在URL模式為PATHINFO模式下=》所有TP框架空操作都被我們自定義的404.jpg頁面替換。

 

二、通用情況--修改apache配置.htaccess

  一般網站報404原因都是找不到資源,是服務器(以Apache為例)報錯,Apache自定義了404輸出,我們的目的是使用自定義的404.html去替換Apache的輸出,

那么就有了下面的代碼和過程:

針對Apache服務器:制作一個404頁面,頁面自己設計即可,命名為notfound.php,上傳到網站根目錄。打開.htaccess文件,添加代碼:ErrorDocument 404 /notfound.php(注意:404和/之間有空格),然后將.htaccess文件上傳到網站根目錄。如果.htaccess存在ErrorDocument 404 /index.php,一定要將其刪除。這種將404錯誤轉向到網站主頁的作法存在極大的風險,嚴重時會導致主頁在搜索引擎中消失。END

示例:

<IfModule mod_rewrite.c>
 RewriteEngine on
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]

ErrorDocument 404 /notfound.php

</IfModule>

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM