wenjian337 发表于 2015-4-18 10:56:24

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;
            }
      }



哪位大神要是做出来了,劳驾指点一二,感激不尽。





Closer 发表于 2015-4-18 11:19:44

請參閱 CI 社區 - 關於 3.0 的預設路由

Aloghli 发表于 2015-4-18 11:19:56

文件名首字母必须大写的这是3.0的特点你不看手册骂来骂去能解决问题?

wenjian337 发表于 2015-4-18 12:00:49

Aloghli 发表于 2015-4-18 11:19
文件名首字母必须大写的这是3.0的特点你不看手册骂来骂去能解决问题?

我是说首字母大写好看,你看见我骂谁了?

wenjian337 发表于 2015-4-18 12:02:09

Closer 发表于 2015-4-18 11:19
請參閱 CI 社區 - 關於 3.0 的預設路由

谢谢。

v阿杰 发表于 2015-4-18 19:04:26

请先理解官方说明,并不是说不能模块分组。只是默认访问配置不能这么设置而已,控制器下建目录一样使用!!!
页: [1]
查看完整版本: codeigniter 3.0路由功能问题