首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Codeigniter3.0的url不能在名称之后为空白?

问为什么Codeigniter3.0的url不能在名称之后为空白?
EN

Stack Overflow用户
提问于 2015-04-24 03:38:49
回答 1查看 251关注 0票数 0

我正在用Codeigniter开发网上销售产品的webs应用程序,并从Ci2.2.1升级到CI3.0。然而,当我在url上输入域名时遇到了一个错误,当我在url上输入域名时,没有被希望default_controller调用的任何控制器加载,而不是输入我的主控制器。

注释:它正在运行Ci2.2.1,在升级到CI3.0.时停止工作。

如果我在域名后键入任何字符或任何控制器(http://localhost/Ecom3/sometroller),它就可以工作,但不能调用default_controller,并且在域后(http://localhost/Ecom3/)保持空或空。

错误日志:错误- 2015-04-24 03:48:57 -> 404页未找到: /index

请查看我的网站结构如下:

Main->Main_controller->MY_controller->CI_Controller我的目的是使控制模板变得容易。

​

​

在MY_controller中,我使用了__autoload()函数

代码语言:javascript
复制
function __autoload($class){
    if (strpos($class, 'CI_') !== 0)
    {
        if (file_exists($file = APPPATH . 'libraries/' . $class .'.php'))
        {
            include_once $file;
        }
    }
}

和我信任下面的路线

代码语言:javascript
复制
$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;

问题:我的url不能是空白的,在我键入域之后,或者在如下图所示的前斜杠之后

​

​

请帮帮忙

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-24 07:39:14

当您的控制器中的Main.php放置在controller/main文件夹中时,我尝试您的代码并得到404。但是当我将Main.php移动到controller文件夹时,默认控制器到Main有工作。然后我试着调试并查看:

代码语言:javascript
复制
// Is the method being specified?
        if (sscanf($this->default_controller, '%[^/]/%s', $class, $method) !== 2)
        {
            $method = 'index';
        }

in core/Router.php

这意味着codeigniter3不允许您在子文件夹中设置default_controller。您必须将default_controller放在app/controller/中以使其工作。

在config/router.php中,更改如下:

代码语言:javascript
复制
$route['default_controller'] = "main/Main";

至:

代码语言:javascript
复制
$route['default_controller'] = "Main";

然后移动控制器文件:

app/controller/main/Main.php

至

代码语言:javascript
复制
app/controller/Main.php
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29838294

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档