我正在开发使用Codeigniter在线销售产品的Web应用程序,并从Ci2.2.1升级到CI3.0。 但是当我在url上输入域名尚未调用任何控制器时,我遇到错误 404 Page Not Not Found 希望 default_controller 将加载而不是键入我的主控制器
注意:它正在使用Ci2.2.1并在升级到CI3.0时停止工作。
如果我在域名后键入任何字符或任何控制器( http://localhost/Ecom3/sometroller ),它会工作但是它是coudn不会调用default_controller并保持空或空白之后域(http://localhost/Ecom3/)。
错误日志: 错误 - 2015-04-24 03:48:57 - > 404找不到页面:/ index
请检查我的网页结构:
主要 - >的 Main_controller - >的 MY_controller - >的是CI_Controller 我的目的是让控制模板变得容易。
在MY_controller中,我使用__autoload()函数
function __autoload($class){
if (strpos($class, 'CI_') !== 0)
{
if (file_exists($file = APPPATH . 'libraries/' . $class .'.php'))
{
include_once $file;
}
}
}
我的配置路线如下
$route['default_controller'] = "main/Main";
$route['(:any)'] = 'main/main/index/$1';
$route['c'] = 'cat/cat/index/$1';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;
问题: 在我输入域名后或在forword斜杠后面,我的网址不能为空白,如下图所示
请帮忙
答案 0 :(得分:1)
我在您的控制器中的Main.php放置在controller/main
文件夹中时,尝试使用代码并获取404。但是当我将Main.php移动到controller
文件夹时,Main的默认控制器正常工作。然后我试着去看看:
// Is the method being specified?
if (sscanf($this->default_controller, '%[^/]/%s', $class, $method) !== 2)
{
$method = 'index';
}
核心/ Router.php中的
这意味着codeigniter3不允许您在子文件夹中设置default_controller。你必须将default_controller放在app/controller/
中才能使其正常工作。
改变这个:
$route['default_controller'] = "main/Main";
TO:
$route['default_controller'] = "Main";
然后移动您的控制器文件:
app/controller/main/Main.php
要
app/controller/Main.php