因为最近的一个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错误了
还没有人发表评论