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设计模式之迭代器模式的深入解析
Jun 13 PHP
php curl post 时出现的问题解决
Jan 30 PHP
php不写闭合标签的好处
Mar 04 PHP
PHP的变量类型和作用域详解
Mar 12 PHP
Laravel 实现密码重置功能
Feb 23 PHP
PHP实现用户异地登录提醒功能的方法【基于thinkPHP框架】
Mar 15 PHP
PHP面向对象程序设计之构造方法和析构方法详解
Jun 13 PHP
PHP Trait代码复用类与多继承实现方法详解
Jun 17 PHP
laravel实现查询最后执行的一条sql语句的方法
Oct 09 PHP
Laravel 不同生产环境服务器的判断实践
Oct 15 PHP
PHP高并发和大流量解决方案整理
Dec 24 PHP
VSCode+PHPstudy配置PHP开发环境的步骤详解
Aug 20 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 面向对象 PHP5 中的常量
2010/05/05 PHP
php的array_multisort()使用方法介绍
2012/05/16 PHP
php中isset与empty函数的困惑与用法分析
2019/07/05 PHP
PHP程序员简单的开展服务治理架构操作详解(三)
2020/05/14 PHP
基于jquery用于查询操作的实现代码
2010/05/10 Javascript
JQuery从头学起第一讲
2010/07/04 Javascript
JavaScript jQuery 中定义数组与操作及jquery数组操作
2015/12/18 Javascript
jQuery.form.js插件不能解决连接超时(timeout)的原因分析及解决方法
2016/10/14 Javascript
Bootstrap源码解读导航条(7)
2016/12/23 Javascript
常用的几个JQuery代码片段
2017/03/13 Javascript
jQuery加密密码到cookie的实现代码
2017/04/18 jQuery
js实现移动端轮播图效果
2020/12/09 Javascript
理解Koa2中的async&await的用法
2018/02/05 Javascript
JavaScript中this用法学习笔记
2019/03/17 Javascript
微信接入之获取用户头像的方法步骤
2019/09/23 Javascript
微信小程序实现多行文字滚动
2020/11/18 Javascript
[49:08]OpTic vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
[01:02:45]完美世界DOTA2联赛 LBZS vs Forest 第三场 11.07
2020/11/09 DOTA
Python zip()函数用法实例分析
2018/03/17 Python
详解python中的json和字典dict
2018/06/22 Python
mac PyCharm添加Python解释器及添加package路径的方法
2018/10/29 Python
pandas 转换成行列表进行读取与Nan处理的方法
2018/10/30 Python
python之cv2与图像的载入、显示和保存实例
2018/12/05 Python
python 遍历列表提取下标和值的实例
2018/12/25 Python
Python 20行简单实现有道在线翻译的详解
2019/05/15 Python
django之从html页面表单获取输入的数据实例
2020/03/16 Python
Farfetch中文官网:奢侈品牌时尚购物平台
2020/03/15 全球购物
在校大学生个人的自我评价
2014/02/13 职场文书
租房协议书范文
2014/08/20 职场文书
献爱心大型公益活动策划方案
2014/09/15 职场文书
环境工程专业毕业生求职信
2014/09/30 职场文书
乡镇党的群众路线教育实践活动总结报告
2014/10/30 职场文书
单位考核鉴定意见
2015/06/05 职场文书
2015入党个人自传范文
2015/06/26 职场文书
怎样写好演讲稿题目?
2019/08/21 职场文书
IDEA 2022 Translation 未知错误 翻译文档失败
2022/04/24 Java/Android