您好,我想问一个问题。我正在构建一个项目,我有这个文件夹结构:
application
- controllers
-- posts.php // this is on frontend
-- admin
--- posts.php // this is on backend obviously
因此,在这两种情况下,如果我尝试从网址访问一个不存在的帖子,我会做类似的事情
$data['post'] = $this->post_model->get_by_id($id);
count($data['post']) || show_404(); // Return 404 if post not found
显示默认的404 Codeigniter页面。
是否可以为前端和后端设置不同的404页面,如果是这样,我该怎么做?
到目前为止我唯一想到的选择是:
2(未经测试)。创建2个不同的控制器和视图,如下
applicatiom
- controllers
-- front404.php
-- admin
--- admin404.php
所以,当我检查帖子是否存在时,它会变成这样的
count($data['post']) || redirect('admin/admin404'); // on back-end
count($data['post']) || redirect('admin/front404'); // on front-end
3(不测试)。类似于第二个选项,但动态设置$route['404_override'] = '';
?
但是我想知道是否有更有效的方法。顺便说一句,我使用的是CodeIgniter v3。
答案 0 :(得分:0)
当你有
时 application/controllers/Error404.php
和application/controllers/admin/Error404.php
,
将$route['404_override']
设置为' Error404
'如果您访问/ admin / non-existing-uri,将导致加载admin / Error404.php。
我不得不这样说 - 你不应该根据列表中是否存在项目而不是404。列表本身仍然存在,即使是空的。
application/controllers/admin/Error404.php
application/controllers/Error404.php
您的路由器设置应如下所示
$route['404_override'] = 'Error404';
多数民众赞成。