codeigniter默認(rèn)路由報(bào)錯(cuò)的問(wèn)題
最近在使用codeigniter時(shí)遇到一個(gè)莫名其妙的bug。如下:
在config/routes配置一個(gè)默認(rèn)路由:
- $route['default_controller'] = "homePage/index";
結(jié)果,訪問(wèn)根url的時(shí)候,404錯(cuò)誤;而訪問(wèn)/homePage/index是正常的。百思不得其解,就去看了一下框架讀取路由配置的代碼。看到system/core/Router.php中這行代碼,恍然大悟。
- function _set_routing(){
- ...
- $this->default_controller = ( ! isset($this->routes['default_controller']) OR $this->routes['default_controller'] == '') ? FALSE : strtolower($this->routes['default_controller']);
- ...
- }
這里調(diào)用了strtolower把default_controller變成小寫,后面去讀取method和class的時(shí)候就會(huì)出錯(cuò)。不知道這是個(gè)bug,還是有意為之。
解決辦法就是default controller命名時(shí)不要含有大寫字母或者把Router.php里這一行代碼的strtolower去掉。