关于CodeIgniter 3.0 default_controller的疑问
我在CI2.x的时候,在controller目录下,分别有admin和index两个目录分别对应后台与前台。
那么routes.php中我是这样设置的
$route['default_controller'] = 'index/home/index';
现在发现在3.0中,这样设置不行了。请问我应该怎么做。 比较纠结的是,我确实希望把前台放到index目录下,而不是直接移动到上层的controller里面。
请问,在现有目录结构的情况下,我怎么实现访问index.php的时候默认控制器为index/home/index
另外,不想通过redirect跳转过去,因为这样显示的就不是index.php而是把全路径暴露出来了
回复内容:
我在CI2.x的时候,在controller目录下,分别有admin和index两个目录分别对应后台与前台。
那么routes.php中我是这样设置的
$route['default_controller'] = 'index/home/index';
现在发现在3.0中,这样设置不行了。请问我应该怎么做。 比较纠结的是,我确实希望把前台放到index目录下,而不是直接移动到上层的controller里面。
请问,在现有目录结构的情况下,我怎么实现访问index.php的时候默认控制器为index/home/index
另外,不想通过redirect跳转过去,因为这样显示的就不是index.php而是把全路径暴露出来了
官方文档有说明
Directories and ‘default_controller’, ‘404_override’
As you should know, the $route['default_controller'] and $route['404_override'] settings accept not only a controller name, but also controller/method pairs. However, a bug in the routing logic has made it possible for some users to use that as directory/controller instead.
As already said, this behavior was incidental and was never intended, nor documented. If you’ve relied on it, your application will break with CodeIgniter 3.0.
可见官方其实是把这当成一个BUG的,并不推荐这种做法。
不想显示index.php;应该是配置:config.phg
$config['index_page'] = ''; //去掉index.php
在根目录加入.htaccess
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(index\.php|assets|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
再者你的配置应该是
$route['default_controller'] ='index/home';
上一篇: 本地可以上传后各种异常
推荐阅读
-
关于“关于C#装箱的疑问”帖子的个人看法 (原发布csdn 2017年10月07日 10:21:10)
-
关于吃杨桃要去皮吗的疑问
-
Oracle中关于不等于号的疑问解答
-
MongoDB 3.0 关于安全认证后使用C#调用碰上“System.TimeoutException”类型的异常在 MongoDB.Driver.Core.d
-
关于代码块的一些疑问
-
关于mvvm模式中消息传递的疑问
-
一定要和iPhone绑定吗 关于Apple Watch的5个疑问解答
-
关于“关于C#装箱的疑问”帖子的个人看法 (原发布csdn 2017年10月07日 10:21:10)
-
关于AndroidStudio升级到3.0以上的问题总结
-
关于vue3.0中的this.$router.replace({ path: '/'})刷新无效果问题