五点晨曦 发表于 2011-11-9 03:26:23

controller跨越上级目录生效

本帖最后由 五点晨曦 于 2011-11-9 03:32 编辑

这个不知道算不算bug,没有灾难性影响,但是感觉不太舒服
我的controllers目录的结构如下

controllers/
      member/
                login.php
                .....
      admin/
                login.php
                .....

我的routes配置:
$route['default_controller'] = "member/login";

测试默认控制器
访问 http://localhost 调用 member/login 控制器 正常
访问 http://localhost/index.php 调用 member/login 控制器 正常
访问 http://localhost/index.php/member 调用 member/login 控制器 正常
访问 http://localhost/index.php/member/login 调用 member/login 控制器 正常

访问 http://localhost/index.php/admin调用 member/login 控制器 傻眼了!!

关于这个问题手册在控制器一章有讲过,但没提及到这种情况
CI只要没有找到对应的controller,就会自己调用配置文件指定的默认controller(member/login),这个过程没有考虑controller所在的目录层级。

解决方法:apache的url重写,或者CI自带的uri路由,在routes.php中加入一行,设置admin目录的默认控制器
$route['admin'] = "admin/login";

之后访问 http://localhost/index.php/admin 调用admin/login 控制器 正常了

huoshanzuoer 发表于 2011-11-9 07:50:14

还真没注意过这块{:soso_e128:}

att555 发表于 2011-11-9 19:13:52

我也看不太明白呢
京东优惠券
茵曼
凡客优惠券
骆驼鞋

水月刀猪 发表于 2011-11-10 16:19:13

:lol:victory:,不错不错,没注意这额

小布丁 发表于 2012-7-11 23:30:27

本帖最后由 小布丁 于 2012-7-11 23:40 编辑

我在controllers目录中建了一个user目录
在router中怎配置他的默认控制器是index.php呢?

我的目录结构controllers
          user
               index.php
               login.php

现在如果把默认控制器设为login.php的话
$route['user'] = "user/login";是正常的

如果想把默认控制器设为index.php的话
$route['user'] = "user/index";
就不对啦
求大拿帮忙解决下

CloudMind 发表于 2013-3-19 16:01:23

index改为home应该可以,最好不要用index命名控制器。
页: [1]
查看完整版本: controller跨越上级目录生效