TP的404页面设置怎么这么多坑啊?

2019-08-12 17:30:40 浏览数 (1)

网上有很多thinkphp的404页面制作方法,但大多太过繁琐不简便,很烦人,所以为大家分享了最便捷的404制作方法,如下。

解决办法:

1.在ThinkPHP3.2详细的介绍了该框架下的ThinkPHP惯例配置文件convention.php(文件位置:根目录/ThinkPHP/Conf/convention.php),里面列出各类配置类。

在该文件下可以看到:

'TMPL_EXCEPTION_FILE' => THINK_PATH.'Tpl/think_exception.tpl',// 异常页面的模板文件

'ERROR_PAGE' => '', // 错误定向页面

附:我是不建议改框架配置的***/

2.只要在根目录/Application/Common/Conf/config.php 文件中加入以下:

'TMPL_EXCEPTION_FILE' => './404.html',// 异常页面的模板文件

'ERROR_PAGE' => './404.html', // 错误定向页面

引导用户输入错误的url路径全部跳转到404.html页面即可。

/*****如果配置好但出不来效果,试着把缓存Runtime删了。

这里面,404.html路径是大问题,费了好久的时间才弄好。

1号坑: 开始我把404放在common模块下,但访问不了。才记起来,Common模块和普通模块一样,可以添加控制器、模型和视图,并且支持多层,但不能直接访问,只能继承,其中模型层可以作为公用模型,在D方法实例化中调用。

2号坑:然后我把404页面放在了Public资源文件夹下。页面里引用的css和image失效了。试了好几种路径常量__PUBLIC__,包括在config里定义IMG和CSS的模版常量,都不行。 然后用最原始的路径,结果成功了。 我没有在网上搜到具体的原因,但我猜测,404页面直接被TMPL_EXCEPTION_FILE使用,并没有被TP渲染,所以路径常量没被解析。

为了验证我的想法,我又把U函数放进去。结果发现页面的源码原封不动的还是U函数。而且TP自定义的think_exception.tpl都是原生php写的。

0 人点赞