Php CodeIgniter在前端和后端使用不同的404页面

Php CodeIgniter在前端和后端使用不同的404页面,php,codeigniter,http-status-code-404,Php,Codeigniter,Http Status Code 404,嗨,我想问一个问题。我正在构建一个项目,其中包含以下文件夹结构: application - controllers -- posts.php // this is on frontend -- admin --- posts.php // this is on backend obviously 因此,在这两种情况下,如果我试图从url访问一篇不存在的文章,我会这样做 $data['post'] = $this->post_model->get_by_id($id); count

嗨,我想问一个问题。我正在构建一个项目,其中包含以下文件夹结构:

application
- controllers
-- posts.php // this is on frontend
-- admin
--- posts.php // this is on backend obviously
因此,在这两种情况下,如果我试图从url访问一篇不存在的文章,我会这样做

$data['post'] = $this->post_model->get_by_id($id);
count($data['post']) || show_404(); // Return 404 if post not found
 count($data['post']) || redirect('admin/admin404'); // on back-end
count($data['post']) || redirect('admin/front404'); // on front-end
显示默认的404 Codeigniter页面

可以为前端和后端设置不同的404页面吗?如果可以,我该怎么做

到目前为止,我认为唯一的选择是:

  • 前端和后端都有相同的自定义404页面,在这种情况下,我只需将不同的404视图设置为默认文件,但我认为这不是最好的选择
  • 2(未测试)。创建两个不同的控制器和视图,如下所示

    applicatiom
    - controllers
    -- front404.php
    -- admin
    --- admin404.php
    
    所以当我检查帖子是否存在时,它会变成这样

    $data['post'] = $this->post_model->get_by_id($id);
    count($data['post']) || show_404(); // Return 404 if post not found
    
     count($data['post']) || redirect('admin/admin404'); // on back-end
    count($data['post']) || redirect('admin/front404'); // on front-end
    
    3(非测试)。类似于第二个选项,但设置
    $route['404_override']=''动态

    然而,我想知道是否有更有效的方法来做到这一点。顺便说一句,我正在使用CodeIgniter v3。

    当您

    application/controllers/Error404.php
    application/controllers/admin/Error404.php

    $route['404_override']
    设置为“
    Error404
    ”将导致在访问/admin/不存在的uri时加载admin/Error404.php

    不过我必须这么说——你不应该根据列表中是否存在条目来判断404。列表本身仍然存在,即使是空的

    application/controllers/admin/Error404.php
    
    application/controllers/Error404.php
    
    您的路由器设置应如下所示

    $route['404_override'] = 'Error404';
    

    就是这样。

    只是一个脑泡:创建
    admin404.php
    内容
    require'../path_here/front404.php'