Thinkphp3.2.3拦截404请求
开发过程中,如果某个页面不存在,经常会显示错误信息,想要定义一个拦截这个错误信息,只显示自定义的404页面,该怎么定义,在Home下。使用前端js拦截不显示404页面,会快速跳转到404之后的页面
Thinkphp3.2.3拦截404请求
开发过程中,如果某个页面不存在,经常会显示错误信息,想要定义一个拦截这个错误信息,只显示自定义的404页面,该怎么定义,在Home下。使用前端js拦截不显示404页面,会快速跳转到404之后的页面
要实现在ThinkPHP3.2.3中拦截404错误,并跳转到自定义的404页面,然后在5秒钟后再跳转回原来的页面,可以按照以下步骤进行:
打开Application/Common/Conf/config.php文件,添加以下配置:
// 添加默认错误页面的配置信息
'TMPL_EXCEPTION_FILE' => APP_PATH . 'Home/View/Public/error.html',
其中,APP_PATH指向网站根目录,在这里假设默认错误页面的路径为Home/View/Public/error.html。
在Application/Home/Controller/IndexController.class.php文件中添加以下代码:
public function _empty()
{
// 判断是否为404错误
if (strtolower(ACTION_NAME) == 'index') {
// 定义跳转链接
$url = $_SERVER['HTTP_REFERER'] ?? '/';
// 跳转到自定义404页面
$this->redirect('/404.html', [], 0, '页面不存在,正在为您跳转···');
// 5秒后自动跳转回原来的页面
echo "<script>setTimeout(function(){location.href='{$url}'},5000);</script>";
}
}
当访问的页面不存在时,_empty()方法会被调用。该方法首先判断当前是否为404错误,如果是,则获取跳转链接(即当前页面的来源地址),然后使用$this->redirect()方法将用户重定向到自定义的404页面。注意,这里的第三个参数指定了跳转时间为0,即不延迟跳转。接下来,使用JavaScript代码在页面上显示“正在为您跳转···”的提示信息,并在5秒后自动跳转回原来的页面。
在public目录下创建一个名为404.html的文件,并编写自定义的404页面内容。
至此,您已经成功实现了在ThinkPHP3.2.3中拦截404错误,并跳转到自定义的404页面,并在5秒钟后再跳转回原来的页面。