dragonflywww 发表于 2011-2-14 22:47:07

2.0不再支持子目录的default_controller了吗?

controllers/目录下有一个子目录test/

我希望访问url:example.com/test/的时候能触发controllers/test/目录下的default_controller
但是测试的结果却是:
example.com/和example.com/test/触发的都是controllers目录下的default_controller

ps: webserver做了rewrite在url中消除了index.php

Hex 发表于 2011-2-15 00:37:41

我试一下,CI 不会把这个基本功能去掉吧。。。。。

dragonflywww 发表于 2011-2-15 09:17:25

楼上测试结果怎么样?我看了一下Router的实现,的确有问题啊

Hex 发表于 2011-2-15 11:28:52

我的测试结果是:和老版本一样,支持子目录的默认控制器。

jeongee 发表于 2011-2-15 11:51:55

这个应该还是继续支持的

pk4321 发表于 2011-2-16 11:11:47

本帖最后由 pk4321 于 2011-2-16 11:33 编辑

刚刚试过,2.0确实不支持controllers子目录是default_controller!

大家可以试试下载一个1.7.3,然后controllers目录里面新建一个www的文件夹,然后把welcome.php拖进去www文件夹里面
而再下载一个2.0,重复以上做法

然后在地址栏里
http://localhost/ci17/index.php/www/

http://localhost/ci20/index.php/www/

分别试试?!

Hex 发表于 2011-2-16 11:51:51

回复 6# pk4321


    楼上的做法我试过,这种情况是没问题的,出问题的是另外一种情况,就是把根目录下的 welcome.php 删除,保留www 目录下的welcome.php 就会出错了。
这貌似是个 BUG,楼主已经提交 BUG 了,正等待官方回复。

dragonflywww 发表于 2011-2-16 12:27:37

提供一个临时解决方案:
把system/core/Router.php的181行改成直接return;
正式解决方案等官方的更新吧

function _set_request($segments = array())
{
                $segments = $this->_validate_request($segments);

                if (count($segments) == 0)
                {
                        //return $this->_set_default_controller();
                        return;//把上一行改成return;
                }
      ...........................

pk4321 发表于 2011-2-16 12:41:45

就是
controllers\welcome.php
controllers\www\welcome.php
两个文件必需同时存在,那么\www\里的才会被调用!

dragonflywww 发表于 2011-2-16 12:50:49

不是同时存在的问题,调用的都是controllers\welcome.php
你把两个文件改一下输出就知道了
页: [1] 2
查看完整版本: 2.0不再支持子目录的default_controller了吗?