codeigniter 3.0路由功能问题
本帖最后由 wenjian337 于 2015-4-18 12:11 编辑这两天试着试试codeigniter 3.0 发现路由不太好使,查看论坛也看到好多人遇到了同样的问题。
首先,整体的控制器你名称首字母大写,确实挺好看的(编程变出强迫症了);
废话不多说/
一个项目不可能就一个功能模块,我还是习惯于模块分组的方式来组织文件,于是会在controller底下建几个目录
├─controllers
│├─api
│├─home
│└─user
但是这样的目录结构在3.0中会带来一些问题。我们设置config/routers.php中的$route['default_controller'] = 'index';
这时候使用http://your_url/home这样的方式去访问是没有问题的,但是如果使用http://your_url/这样的方式,就找不到页面
我想了几个方法
方法一,
步骤:
[*]autoload.php,自动加载urlhelper
[*]config.php,$config['uri_protocol'] = 'PATH_INFO';
[*]在controllers/文件夹下,建一个Index.php作为跳转,redirec('home/index'),跳转到你想要的首页去.
[*]nginx配置
location ~ \.php {
fastcgi_pass 127.0.0.1:9000;
fastcgi_indexindex.php;
include fastcgi_params;
set $path_info "";
set $real_script_name $fastcgi_script_name;
if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {
set $real_script_name $1;
set $path_info $2;
}
fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
fastcgi_param SCRIPT_NAME $real_script_name;
fastcgi_param PATH_INFO $path_info;
}
方法二:在routers.php定义规则$route['/']='home/index';这种恐怕不行,
方法三:在服务器软件上使用 rewrite 规则,前提是开启了nginx pathinfo;
location / {
rewrite ^/$ /home last;
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php/$1 last;
break;
}
}
哪位大神要是做出来了,劳驾指点一二,感激不尽。
請參閱 CI 社區 - 關於 3.0 的預設路由 文件名首字母必须大写的这是3.0的特点你不看手册骂来骂去能解决问题? Aloghli 发表于 2015-4-18 11:19
文件名首字母必须大写的这是3.0的特点你不看手册骂来骂去能解决问题?
我是说首字母大写好看,你看见我骂谁了?
Closer 发表于 2015-4-18 11:19
請參閱 CI 社區 - 關於 3.0 的預設路由
谢谢。
请先理解官方说明,并不是说不能模块分组。只是默认访问配置不能这么设置而已,控制器下建目录一样使用!!!
页:
[1]