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 相关文章推荐
PHP5 安装方法
Oct 09 PHP
php include,include_once,require,require_once
Sep 05 PHP
php 无限分类的树类代码
Dec 03 PHP
PHP学习之整理字符串
Apr 17 PHP
php后退一页表单内容保存实现方法
Jun 17 PHP
php中计算未知长度的字符串哪个字符出现的次数最多的代码
Aug 14 PHP
PHPExcel内存泄漏问题解决方法
Jan 23 PHP
PHP实现的增强性mhash函数
May 27 PHP
PHP面向对象自动加载机制原理与用法分析
Oct 14 PHP
PHP mysqli事务操作常用方法分析
Jul 22 PHP
PHP实现通过CURL上传文件功能示例
May 30 PHP
laravel 时间格式转时间戳的例子
Oct 11 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
Optimizer与Debugger兼容性问题的解决方法
2008/12/01 PHP
php获取从百度搜索进入网站的关键词的详细代码
2014/01/08 PHP
PHP FTP操作类代码( 上传、拷贝、移动、删除文件/创建目录)
2014/05/10 PHP
QQ互联一键登录审核不通过的解决方案
2014/09/10 PHP
php文件上传简单实现方法
2015/01/24 PHP
php取得字符串首字母的方法
2015/03/25 PHP
php实现的递归提成方案实例
2015/11/14 PHP
WordPress后台中实现图片上传功能的实例讲解
2016/01/11 PHP
javascript 浏览器判断 绑定事件 arguments 转换数组 数组遍历
2009/07/06 Javascript
JS+XML 省份和城市之间的联动实现代码
2009/10/14 Javascript
如何在一个页面显示多个百度地图
2013/04/07 Javascript
JQuery判断radio是否选中并获取选中值的示例代码
2014/10/17 Javascript
JS中完美兼容各大浏览器的scrolltop方法
2015/04/17 Javascript
js+css实现回到顶部按钮(back to top)
2016/03/02 Javascript
JavaScript实现的select点菜功能示例
2017/01/16 Javascript
详解Angular 中 ngOnInit 和 constructor 使用场景
2017/06/22 Javascript
JavaScript之DOM_动力节点Java学院整理
2017/07/03 Javascript
spirngmvc js传递复杂json参数到controller的实例
2018/03/29 Javascript
深入理解Promise.all
2018/08/08 Javascript
bootstrap table.js动态填充单元格数据的多种方法
2019/07/18 Javascript
Vue数据绑定实例写法
2019/08/06 Javascript
使用python实现扫描端口示例
2014/03/29 Python
Python中SOAP项目的介绍及其在web开发中的应用
2015/04/14 Python
Python查找函数f(x)=0根的解决方法
2015/05/07 Python
MySQL最常见的操作语句小结
2015/05/07 Python
python进度条显示之tqmd模块
2020/08/22 Python
一款css实现的鼠标经过按钮的特效
2014/09/11 HTML / CSS
HTML5实现页面切换激活的PageVisibility API使用初探
2016/05/13 HTML / CSS
戴尔新加坡官网:Dell Singapore
2020/12/13 全球购物
英国奢侈品在线精品店:Hervia
2020/09/03 全球购物
简单介绍Object类的功能、常用方法
2013/10/02 面试题
文职个人求职信范文
2013/09/23 职场文书
2015年宣传部部长竞选演讲稿
2014/11/28 职场文书
2014年政府采购工作总结
2014/12/09 职场文书
2015年“公民道德宣传日”活动方案
2015/05/06 职场文书
JavaScript如何利用Promise控制并发请求个数
2021/05/14 Javascript