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

时间:2015-09-24 09:29:54

标签: php codeigniter http-status-code-404

您好,我想问一个问题。我正在构建一个项目,我有这个文件夹结构:

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页面,如果是这样,我该怎么做?

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

  1. 前端和后端都有相同的自定义404页面,在这种情况下,我只需要为默认文件设置不同的404视图,但我不认为它是最佳选择。
  2. 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。

1 个答案:

答案 0 :(得分:0)

当你有

application/controllers/Error404.phpapplication/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';

多数民众赞成。