You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将控制器内不存在的方法重定向到index方法而不触发404

针对CodeIgniter框架的实现方案

你只需要在abcController中添加CI框架自带的_remap魔术方法即可,无需修改全局404配置,该配置只会对当前控制器生效,其他控制器仍会走你原有全局404逻辑:

修改后的控制器代码

Class abcController extends My_Controller {

        function __construct() {
            parent::__construct();
            $this->load->library('encrypt');
        }

        // 新增重写路由逻辑的_remap方法
        public function _remap($request_method, $params = array())
        {
            // 校验请求的方法是否在当前控制器中真实存在
            if (method_exists($this, $request_method))
            {
                // 存在则正常调用对应方法,传入参数
                return call_user_func_array(array($this, $request_method), $params);
            }
            // 方法不存在时跳转到index
            redirect('abcController/index');
            // 若希望访问URL保持不变,直接返回index页面内容,可替换为下行代码
            // $this->index();
        }

        function index() {
            $this->load->view('checkingOS');
        }   
}

补充说明

  • _remap是CodeIgniter控制器的内置方法,优先级高于默认的URL路由解析规则,所有对当前控制器的方法请求都会先经过该方法处理
  • 若需要自定义跳转状态码,可以给redirect方法加第二个参数,比如redirect('abcController/index', 'refresh', 301)实现301永久重定向

内容的提问来源于stack exchange,提问作者lauwis premium

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 08:36:03