CodeIgniter配置之routes.php用法实例分析


Posted in PHP onJanuary 19, 2016

本文实例分析了CodeIgniter配置之routes.php用法。分享给大家供大家参考,具体如下:

application/config/routes.php中定义了一个名为$route的数组,用来设置默认路由和404页面以及可以设置一些匹配方式。

默认的配置如下:

$route['default_controller'] = "welcome";
$route['404_override'] = '';

default_controller指定默认的控制器名称,404_override指定当出现404时调用的控制器名称。有时候可能出现解析不成功,或者一直在默认页面,我们可以调用$this->router打印一下当前解析的控制器和Acion名称。比如可以在MY_Controller中如下打印:

var_dump($this->router->fetch_directory());
var_dump($this->router->fetch_class());
var_dump($this->router->fetch_method());

确定下解析到哪个控制器了, 然后在看看URL的配置、服务器配置,以及可以在Router.php 和URI.php中调试下。

$route数组也可以通过通配符(:num, :any)、正则来设置重写规则,下面是一些简单的例子:

1、将 http://pc.local/admin/detail_1.htm 请求解析到 http://pc.local/admin/detail.htm?user_id=1 处理。
Codeigniter并不支持包含查询字符串的重写规则,这个规则看起来应当这么写:

$route['admin/detail_(:num)'] = 'admin/detail?user_id=$1';

但实际上并未生效,程序匹配到admin/detail?user_id=1后用"/"分隔,索引为0的为控制器名,索引为1的为方法名,也就是会将上面的 detail?user_id=1赋值给方法名,结果可想而知就404了。搞清分隔原理后可以在detail后面增加一个斜杠,确保类名和方法名的正确,如:
$route['admin/detail_(:num)'] = 'admin/detail/?user_id=$1';

但此时又存在参数的获取问题了,会将第三个参数传递给方法,如果需要使用$_GET或者$this->input->get获取还需要对参数进行处理,如:
parse_str(ltrim($query_string, '?'), $_GET);

2、对PATH_INFO的URL形式重写规则还是比较支持的。如要实现http://pc.local/admin/1这种格式:
$route['admin/(:num)'] = 'admin/detail/$1';

参数的获取就只能通过段落的方式来获取了。

注意: 路由将会按照定义的顺序来运行.高层的路由总是优先于低层的路由.

最后,能使用CI来设置的路由还是建议使用CI来设置,不依赖服务器配置。

希望本文所述对大家基于CodeIgniter框架的PHP程序设计有所帮助。

PHP 相关文章推荐
php中文本操作的类
Mar 17 PHP
PHP操作xml代码
Jun 17 PHP
PHP实现微信公众平台音乐点播
Mar 20 PHP
免费的ip数据库淘宝IP地址库简介和PHP调用实例
Apr 08 PHP
thinkphp分页实现效果
Oct 13 PHP
PHP实现打包zip并下载功能
Jun 12 PHP
php curl简单采集图片生成base64编码(并附curl函数参数说明)
Feb 15 PHP
Thinkphp5+plupload实现的图片上传功能示例【支持实时预览】
May 08 PHP
tp5框架使用cookie加密算法实现登录功能示例
Feb 10 PHP
浅析PHP反序列化中过滤函数使用不当导致的对象注入问题
Feb 15 PHP
php7 list()、session及其他模块的修改实例分析
May 25 PHP
php png失真的原因及解决办法
Oct 24 PHP
CodeIgniter配置之config.php用法实例分析
Jan 19 #PHP
Codeigniter控制器controller继承问题实例分析
Jan 19 #PHP
php pthreads多线程的安装与使用
Jan 19 #PHP
PHP+swoole实现简单多人在线聊天群发
Jan 19 #PHP
PHP各种异常和错误的拦截方法及发生致命错误时进行报警
Jan 19 #PHP
[原创]CI(CodeIgniter)简单统计访问人数实现方法
Jan 19 #PHP
PHP数组去重比较快的实现方式
Jan 19 #PHP
You might like
php制作简单模版引擎
2016/04/07 PHP
AlertBox 弹出层信息提示框效果实现步骤
2010/10/11 Javascript
javascript textarea光标定位方法(兼容IE和FF)
2011/03/12 Javascript
js中键盘事件实例简析
2015/01/10 Javascript
JS实现文字链接感应鼠标淡入淡出改变颜色的方法
2015/02/26 Javascript
jQuery中hover方法和toggle方法使用指南
2015/02/27 Javascript
jQuery实现的网页左侧在线客服效果代码
2015/10/23 Javascript
JS实现slide文字框缩放伸展效果代码
2015/11/05 Javascript
基于jQuery实现点击弹出层实例代码
2016/01/01 Javascript
理解javascript异步编程
2016/01/27 Javascript
利用jquery给指定的table动态添加一行、删除一行的方法
2016/10/12 Javascript
vue2配置scss的方法步骤
2019/06/06 Javascript
Vue发布项目实例讲解
2019/07/17 Javascript
js简单的分页器插件代码实例
2019/09/11 Javascript
Vue中登录验证成功后保存token,并每次请求携带并验证token操作
2020/09/08 Javascript
Antd表格滚动 宽度自适应 不换行的实例
2020/10/27 Javascript
[02:39]DOTA2国际邀请赛助威团西雅图第一天
2013/08/08 DOTA
[01:10]DOTA2次级职业联赛 - EP战队宣传片
2014/12/01 DOTA
[38:40]2018DOTA2亚洲邀请赛 4.6淘汰赛 mineski vs LGD 第一场
2018/04/10 DOTA
详解Python2.x中对Unicode编码的使用
2015/04/03 Python
python数据类型判断type与isinstance的区别实例解析
2017/10/31 Python
Python编程argparse入门浅析
2018/02/07 Python
Python采集代理ip并判断是否可用和定时更新的方法
2018/05/07 Python
通过Python模块filecmp 对文件比较的实现方法
2018/06/29 Python
python Flask 装饰器顺序问题解决
2018/08/08 Python
使用 Python 在京东上抢口罩的思路详解
2020/02/27 Python
Pandas将列表(List)转换为数据框(Dataframe)
2020/04/24 Python
Opencv python 图片生成视频的方法示例
2020/11/18 Python
利用Opencv实现图片的油画特效实例
2021/02/28 Python
New Balance法国官方网站:购买鞋子和服装
2019/09/01 全球购物
物业公司的岗位任命书
2014/06/06 职场文书
学校运动会广播稿100条
2014/09/14 职场文书
幼儿园工作总结2015
2015/04/01 职场文书
2016年大学迎新晚会工作总结
2015/10/15 职场文书
导游词之蜀山胜景瓦屋山
2019/11/29 职场文书
详解python中[-1]、[:-1]、[::-1]、[n::-1]使用方法
2021/04/25 Python