一,前言

  一.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>

  

TP3.2框架,实现空模块、空控制器、空操作的页面404替换||同步实现apache报错404页面替换的更多相关文章

  1. springmvc前端控制器拦截路径的配置报错404

    1.拦截"/",可以实现现在很流行的REST风格.很多互联网类型的应用很喜欢这种风格的URL.为了实现REST风格,拦截除了jsp的所有. 2.拦截/*,拦截所有访问,会导致404 ...

  2. php YII2空数组插入报错问题处理 Array to string conversion

    问题描述 前端传空数组 [],php接收后处理不当插入数据库时报错Array to string conversion 参数示例 { "id": 0, //ID整型 "t ...

  3. SharePoint Iframe 报错“此内容不能显示在一个框架中”<续>

    在之前的SharePoint站点iframe引用中,我们遇到过下面的问题,就是其它系统或者不通环境的SharePoint站点,引用SharePoint页面会报错“此内容不能显示在一个框架中”,之前我们 ...

  4. 【spring cloud】【IDEA】【maven】spring cloud多模块在idea上使用maven插件打包报错:程序包XXX不存在

    >>>>spring cloud 多模块 >>>>在idea上使用maven插件打包,欲打包成jar包后 进行部署 >>>> 报 ...

  5. 2016/5/6 thinkphp ①框架 ② 框架项目部署 ③MVC模式 ④控制器访问及路由解析 ⑤开发和生产模式 ⑥控制器和对应方法创建 ⑦视图模板文件创建 ⑧url地址大小写设置 ⑨空操作空控制器 ⑩项目分组

    真实项目开发步骤: 多人同时开发项目,协作开发项目.分工合理.效率有提高(代码风格不一样.分工不好) 测试阶段 上线运行 对项目进行维护.修改.升级(单个人维护项目,十分困难,代码风格不一样) 项目稳 ...

  6. ThinkPHP3.2 中空方法、空控制器和空模块的设置

    ThinkPHP3.2 中空方法.空控制器和空模块的设置 1.空方法设置 问题: 当你访问一个不存在的方法的时候: 如: http://localhost/test/index.php/Home/Us ...

  7. 【tp5】tp5实现空模块、空控制器、空操作的页面404跳转

    写在最开始:本教程适用于tp5路由的[强制模式+半pathinfo模式+pathinfo模式],通用. 比网上的[通过路由去控制空模块更强力.更全面]. PS:路由控制空模块缺点:仅仅在[强制模式下才 ...

  8. Tp5 空模块、空控制器、空方法的处理

    1.空模块处理 如果是开启了路由 可直接找到route.php文件,具体的位置看个人放置的位置,在里面新增一个语句 '__miss__' => ['portal/index/errorMsg', ...

  9. thinkphp5.0 空模块、空控制器、空方法

    空模块 'exception_handle' => function(Exception $e){ // 参数验证错误 if ($e instanceof \think\exception\Va ...

随机推荐

  1. leetcode Roman Integer

    class Solution { public: int romanToInt(string s) { if (s.length() < 1) return 0; map<char,int ...

  2. HttpWebRequest 对象池 HTTP协议 HttpWebRequest和 Socket的一点总结

    相信接触过网络开发的人对HTTP.HttpWebRequest.Socket这些东西都不陌生吧.它们之间的一些介绍和关系我这里都忽略了.开我们平时开发过程中也是很少有机会接触大什么大并发这个东东,一般 ...

  3. HTML中的转义字符 (转)

    HTML中<, >,&等有特殊含义,(前两个字符用于链接签,&用于转义),不能直接使用.使用这三个字符时,应使用它们的转义序列,如下所示: & 或 & &a ...

  4. oracle的!=与<>

    效果是完全一样的 Oracle中有三个不等符号的,分别是: != ^= <>

  5. Hibernate缓存应用的积累与总结

    Hibernate缓存一直比较难掌握,下面就分析和总结原因,相信你就会慢慢清楚了原来Hibernate缓存也是可以轻松掌握的,但前提要求大家必须跟着动手去验证一下,再用心体会,光看是没有用的 目录: ...

  6. 如何基于TensorFlow使用LSTM和CNN实现时序分类任务

    https://www.jiqizhixin.com/articles/2017-09-12-5 By 蒋思源2017年9月12日 09:54 时序数据经常出现在很多领域中,如金融.信号处理.语音识别 ...

  7. 简单介绍Ceph分布式存储集群

    在规划Ceph分布式存储集群环境的时候,对硬件的选择很重要,这关乎整个Ceph集群的性能,下面梳理到一些硬件的选择标准,可供参考: 1)CPU选择 Ceph metadata server会动态的重新 ...

  8. Android 关于 ActionBarSherlock 的使用

    原文地址 本文内容 使用 主题化 ActionBarSherlock 演示项目 本文 ActionBarSherlock 简单演示 最近一个星期被 actionsherlock 搞得很不爽(光去足疗店 ...

  9. JavaScript 从闭包可以做什么开始,将有助于理解闭包

    本文内容 函数内部访问全局变量 函数外部不能直接访问局部变量 函数外部访问局部变量 保护私有成员 持久性 模块化 抽象性 闭包是 JavaScript 的重要特性,非常强大,可用于执行复杂的计算,可并 ...

  10. python之simplejson,Python版的简单、 快速、 可扩展 JSON 编码器/解码器

    python之simplejson,Python版的简单. 快速. 可扩展 JSON 编码器/解码器 simplejson Python版的简单. 快速. 可扩展 JSON 编码器/解码器 编码基本的 ...