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 我试一下,CI 不会把这个基本功能去掉吧。。。。。 楼上测试结果怎么样?我看了一下Router的实现,的确有问题啊 我的测试结果是:和老版本一样,支持子目录的默认控制器。 这个应该还是继续支持的 本帖最后由 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/
分别试试?! 回复 6# pk4321
楼上的做法我试过,这种情况是没问题的,出问题的是另外一种情况,就是把根目录下的 welcome.php 删除,保留www 目录下的welcome.php 就会出错了。
这貌似是个 BUG,楼主已经提交 BUG 了,正等待官方回复。 提供一个临时解决方案:
把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;
}
...........................
就是
controllers\welcome.php
controllers\www\welcome.php
两个文件必需同时存在,那么\www\里的才会被调用! 不是同时存在的问题,调用的都是controllers\welcome.php
你把两个文件改一下输出就知道了
页:
[1]
2