php404.3,ThinkPHP3.2 404跳转

当用户访问到不存在的模块、控制器或者方法会出现:页面错误!请稍后再试~

为了更好的用户体验,我们将错误页面跳转到指定的404页面,下面是三种实现方法.

方法一:

这个错误的默认模板页在 ./ThinkPHP/Tpl/think_exception.tpl,可以设置自定义的异常页面来代替 ThinkPHP 默认的错误页面,

在配置文件 config.php 中配置:

//404错误页面跳转

'TMPL_EXCEPTION_FILE'   => './Public/Home/error.html',

在访问不存在的模块、控制器或方法时,会加载默认的或者自定义的异常页面模板。

方法二:

定义 EmptyController 类

例如在 Home 模块下创建一个 EmptyController.class.php,

namespace Home\Controller;

use Think\Controller;

class EmptyController extends Controller{

public function _empty(){

//_empty() 方法定义当用户访问一个不存在的控制器里的不存在的方法时系统处理

header( " HTTP/1.0  404  Not Found" );

header('Location:/404.html');

}

public function index(){

//index 方法定义当用户访问一个不存在的控制器时系统处理

header('HTTP/1.0 404 Not Found');

header('Location:/404.html');

}

}

注:如果用户访问已有的控制器里的不存在的方法时,可以在控制器继承的上一级里定义空操作 _empty()

方法三:

在配置文件 config.php 中配置:'ERROR_PAGE'=>'/404.html' #这里的页面要从根路径开始

这个配置好了效果挺好用的,3.2.3里好像有问题,如果不正常需要修改以下地方代码,第306行

ThinkPHP\Library\Think\Think.class.php

官方代码是://否则定向到错误页面

$error_page         = C('ERROR_PAGE');

if (!empty($error_page)) {

redirect($error_page);

} else {

$message        = is_array($error) ? $error['message'] : $error;

$e['message']   = C('SHOW_ERROR_MSG')? $message : C('ERROR_MESSAGE');

}

我们需要把redirect($error_page);替换//否则定向到错误页面

$error_page         = C('ERROR_PAGE');

if (!empty($error_page)) {

//redirect($error_page);

header('HTTP/1.1 301 Moved Permanently');

header('Location: '.$error_page);

} else {

$message        = is_array($error) ? $error['message'] : $error;

$e['message']   = C('SHOW_ERROR_MSG')? $message : C('ERROR_MESSAGE');

}

总结:

第一种方法:只能指定模版文件,不能指定跳转页面

第二种方法:要写的地方太多

第三种方法:个人觉得很方便,修改一处就好,可以跳转到指定方法和文件

配图:

fbf871138aff874f8261197b94b54507.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值