|
本帖最后由 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配置
HTML复制代码 location ~ \.php {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.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;HTML复制代码
location / {
rewrite ^/$ /home last;
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php/$1 last;
break;
}
}
复制代码
哪位大神要是做出来了,劳驾指点一二,感激不尽。
|
|