记录thinkphp5.0.24版本开发网站出现的各种bug解决笔记,目前遇到如下几个问题:
试验了网上几个关于URL重写(包括隐藏index.php和达成伪静态)的nginx配置,最终还是基于thinkphp官方给的答案做一点修改是有效果:
使用自定义404页面需要注意的事项有几个,这里的自定义的404页面使用的是控制器(Error)方法渲染视图模板文件动态生成的。系统的默认空控制器名正好是Error,所以我们借用来创建404页面的控制器,以文章页控制器为例:
#URL重写隐藏index.php,页面URL伪静态
# 这个是官方写法
location / {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=/$1 last;
break;
}
}这里特别注意如果你的入口文件index.php是在public目录内的,那么按照官方的配置就可以了,如果你的入口文件index.php和博主一样是在项目根目录也就是和public目录同级,那么需要去掉外面的location:
# 入口文件index.php在项目根目录内
server {
... 其他配置
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=/$1 last;
break;
}
... 其他配置
} $id = $this->request->param('id/d');
//查询对应的ID是否有文章存在
$currentArticle = ArticleModel::get($id);
if (empty($currentArticle)) {
throw new \think\exception\HttpException(404, "参数有误");
}这里的文章页控制器判断出访问一个不存在的页面ID之后立即抛出404异常交给了框架,这个时候需要配合路由规则 :
Route::get('404', 'index/error/index');以及nginx正确的错误页配置:
error_page 404 /404.html;
#URL 重写
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=/$1 last;
break;
}



