为什么Codeigniter3.0的网址在doamin名称后不能为空?

时间:2015-04-24 03:38:49

标签: codeigniter

我正在开发使用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 我的目的是让控制模板变得容易。

enter image description here

在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斜杠后面,我的网址不能为空白,如下图所示

enter image description here

请帮忙

1 个答案:

答案 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/中才能使其正常工作。

在config / router.php中

改变这个:

$route['default_controller'] = "main/Main";

TO:

$route['default_controller'] = "Main";

然后移动您的控制器文件:

app/controller/main/Main.php

app/controller/Main.php