CodeIgniter 404 页面

新手上路,请多包涵

当我在我的网站上输入一个不存在的 url 时,它会将我带到 routes.php 中指定的 404 页面:

 $route['404_override'] = 'page/not_found';

所以页面的设计就像我在“页面”目录中的视图 not_found.php 中所做的那样。

但是,如果我使用此功能手动执行 404:

 show_404();

它会将我带到没有样式的默认 CodeIgniter 404 页面:

 404 Page Not Found

The page you requested was not found.

我怎样才能让它转到我在路由文件中指定的同一个 404 页面?

原文由 user967451 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 447
1 个回答

这里的所有答案似乎都非常过时(至少从第 2 版开始)或非常矫枉过正。这是一种更简单且易于管理的方法,它只涉及两个步骤:

  1. application/config/ routes.php 中修改字段 404_override 以指向某个控制器:
    // Specify some controller of your choosing
   $route['404_override'] = 'MyCustom404Ctrl';

  1. 在您的 routes.php 中指定的控制器内,实施 index() 方法,以便它加载您的自定义错误 404 视图。您可能还想设置一些标头,以便浏览器知道您正在返回 404 错误:
    // Inside application/controllers/MyCustom404Ctrl.php
   class MyCustom404Ctrl extends CI_Controller  {
       public function __construct() {
           parent::__construct();
       }

       public function index(){
           $this->output->set_status_header('404');

           // Make sure you actually have some view file named 404.php
           $this->load->view('404');
       }
   }

就像提到的代码内注释一样,确保在 application/views/404.php 中有一个视图文件,您实际上在其中拥有自定义 404 页面。

作为旁注,本页中的一些答案建议您修改 /system 中的内容,这是一个坏主意,因为当您更新您的 CodeIgniter 版本时,您将覆盖您的更改。我建议的解决方案不会弄乱核心文件,这会使您的应用程序更加便携和可维护,并且更耐更新。

原文由 rodrigo-silveira 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏