thinkPHP到底怎么设置404错误页面

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了thinkPHP到底怎么设置404错误页面相关的知识,希望对你有一定的参考价值。

1、首先要在Lib/Action 下建立EmptyAction.class.php模块
内容如下:
复制代码 代码如下:
<?php
/*
* @author rocky
* @date 20141021
* @desc 空模块404等错误
* */
class EmptyAction extends CommonAction
function _empty()
header("HTTP/1.0 404 Not Found");
$this->display('Public:404');


?>
2、做完以上处理,只能在访问到空模块的时候才会访问404页面,所以,为了访问空方法也访问404页面,我们还需要在CommonAction.class.php增加一个空方法了,方法如下:
复制代码 代码如下:
//处理所有没有的方法的处理方法,引导到404页面
public function _empty()
R('Empty/_empty');

3、做完以上工作基本可以了,但是别忘了把你的404.html页面放在Tpl/Public下
参考技术A 404 页面代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>很抱歉,您搜索的书搬家啦-言书库!</title>
<style type="text/css">
body margin: 0px; padding:0px; font-family:"微软雅黑", Arial, "Trebuchet MS", Verdana, Georgia,Baskerville,Palatino,Times; font-size:16px;
divmargin-left:auto; margin-right:auto;
a text-decoration: none; color: #1064A0;
a:hover color: #0078D2;
img border:none;
h1,h2,h3,h4
/* display:block;*/
margin:0;
font-weight:normal;
font-family: "微软雅黑", Arial, "Trebuchet MS", Helvetica, Verdana ;

h1font-size:44px; color:#0188DE; padding:20px 0px 10px 0px;
h2color:#0188DE; font-size:16px; padding:10px 0px 40px 0px;
#pagewidth:910px; padding:20px 20px 40px 20px; margin-top:80px;
.buttonwidth:180px; height:28px; margin-left:0px; margin-top:10px; background:#009CFF; border-bottom:4px solid #0188DE; text-align:center;
.button awidth:180px; height:28px; display:block; font-size:14px; color:#fff;
.button a:hover background:#5BBFFF;
</style>
</head>
<body>
<div id="page" style="border-style:dashed;border-color:#e4e4e4;line-height:30px;background:url(sorry.png) no-repeat right;">
<h1>腹有诗书气自华~</h1>
<h2>言书库,完本小说在线阅读网址 </h2>
<meta http-equiv="refresh" content="1.5;url=http://www.yanshuku.com">
<font color="#666666">2秒内,若网页未能自动跳转,请点击下面按钮进行跳转!</font><br /><br />
<div class="button">
<a href="http://www.yanshuku.com" title="进入首页">立即进入首页</a>
</div>
</div>
</body>
</html>

TP配置:
无法加载模板跳向404页面
/thinkphp/library/think/Dispatcher.class.php中176行
// 加载模块的扩展配置文件
load_ext_file(MODULE_PATH);
else
header("Location:/404.html");die;
// E(L(‘_MODULE_NOT_EXIST_‘).‘:‘.MODULE_NAME);

加上header跳转页面,404.html放在跟下

无法加载控制器跳向404页面
创建一个EmptyController.class.php 代码如下

namespace Home\Controller;
use Think\Controller;
class EmptyController extends Controller

public function _empty()
$this->display(‘Error/404‘);//在Home/view中Error文件夹中


这样就行
无法加载方法跳向404页面
在/thinkphp/library/think/Controller.class.php在170行加上重跳转404页面
public function __call($method,$args)
if( 0 === strcasecmp($method,ACTION_NAME.C(‘ACTION_SUFFIX‘)))
if(method_exists($this,‘_empty‘))
// 如果定义了_empty操作 则调用
$this->_empty($method,$args);
elseif(file_exists_case($this->view->parseTemplate()))
// 检查是否存在默认模版 如果有直接输出模版
$this->display();
else
$this->display(‘Error/404‘);
// E(L(‘_ERROR_ACTION_‘).‘:‘.ACTION_NAME);

else
E(__CLASS__.‘:‘.$method.L(‘_METHOD_NOT_EXIST_‘));
    return;
  

Thinkphp5笔记七:设置错误页面①

设置网站的错误提示页面,也是一个很重要的环节。

 

一、空操作

在当前控制器里面增加E_empty操作

public function _empty(){
    $this->error(方法不存在);
}
Public function index(){
        
}

测试方法:

正常:

http://localhost/thinkphp/index/index/index

错误: 会提示“方法不存在”

http://localhost/thinkphp/index/index/df

 

二、空控制器

在模块下建立Error控制器,

位置: index/error.php     相关参数:empty_controller

代码:

<?php
/**
 * 前端首页
 * */
namespace app\index\controller;
use app\index\controller;

class Error extends IndexBase
{
    public function index(){
        echo 访问的控制器不存在;
    }

}

测试:http://localhost/thinkphp/index/inde3dfx/index

 

三、异常错误抛出

能够影响它的是,当前模块下的配置文件。如果当前配置文件无效,则会自动锁定公共模块下的配置参数

相关参数:exception_tmpl,error_message   

// 异常页面的模板文件
    exception_tmpl         => THINK_PATH . tpl . DS . think_exception.tpl,

 

以上是关于thinkPHP到底怎么设置404错误页面的主要内容,如果未能解决你的问题,请参考以下文章

Thinkphp设置仅在调试模式关闭时显示404页面

Thinkphp设置仅在调试模式关闭时显示404页面

thinkphp 怎么设置404

thinkphp 5.0如何实现自定义404(异常处理)页面

ThinkPHP3.2设置404跳转页面

thinkphp5设置404页面不跳转