thinkphp访问自定义404页面显示状态码是500

建站系统 / 115人浏览 / 0人评论

因为最近的一个TP项目搜索引擎提示了404软连接异常,所以去站点去看了一眼,惊奇的发现当找不到页面时,手动抛出404异常,返回的浏览器状态码是:500,搜了一堆解决方案,最后看到一个又用顺便记录下来,有需要的小伙伴可以用来参考:

根据tp5官方说法,在使用HttpException手动抛出异常时,希望跳转到自定义的错误404页面, 可以使用\think\exception\HttpException类来抛出异常 一旦抛出了HttpException异常,可以支持定义单独的异常页面的模板地址,只需要在应用配置文件中增加:

'http_exception_template'    =>  [
    // 定义404错误的重定向页面地址
    404 =>  APP_PATH.'404.html',
    // 还可以定义其它的HTTP status
    401 =>  APP_PATH.'401.html',
]

一般来说HTTP异常是由系统自动抛出的,但我们也可以手动抛出

throw new \think\exception\HttpException(404, '页面不存在');

或者通过助手函数abort手动抛出HTTP异常,例如:

abort(404,'页面不存在');

解决方案: 说了一堆不管你用那种方法抛出404,两个问题要注意:

1.http_exception_template中的404页面的配置路径,是APP_PATH或者ROOT_PATH下面的那个具体文件夹里,而不是直接复制官方的配置直接写入config.php中,你要根据你的站点404的实际路径在哪去配置,当你的config中http_exception_template下面的404页面配置路径错误的时候,就会神奇的抛出异常,页面没调出来,然后直接抛出http:500错误码

2.配置好congfig中的http_exception_template,要把线上config调成部署模式:

    'app_debug'              => false,
    // 应用Trace
    'app_trace'              => false,

以上两点坐到了,抛异常时,就不会直接报http500错误了

评论列表

还没有人发表评论

发表评论 取消回复