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 相关文章推荐
基于qmail的完整WEBMAIL解决方案安装详解
Oct 09 PHP
php防注
Jan 15 PHP
PHP Zip解压 文件在线解压缩的函数代码
May 26 PHP
php中利用post传递字符串重定向的实现代码
Apr 21 PHP
php获取数组中重复数据的两种方法
Jun 28 PHP
php使用google地图应用实例
Dec 31 PHP
PHP计算当前坐标3公里内4个角落的最大最小经纬度实例
Feb 26 PHP
ThinkPHP框架里隐藏index.php
Apr 12 PHP
php判断str字符串是否是xml格式数据的方法示例
Jul 26 PHP
PHP date()格式MySQL中插入datetime方法
Jan 29 PHP
laravel 模型查询按照whereIn排序的示例
Oct 16 PHP
phpQuery采集网页实现代码实例
Apr 02 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安全编程之加密功能
2006/10/09 PHP
一个颜色轮换的简单例子
2006/10/09 PHP
ZF等常用php框架中存在的问题
2008/01/10 PHP
php自定义函数实现二维数组按指定key排序的方法
2016/09/29 PHP
PHP多个图片压缩成ZIP的方法
2020/08/18 PHP
yii框架结合charjs统计上一年与当前年数据的方法示例
2020/04/04 PHP
Javascript miscellanea -display data real time, using window.status
2007/01/09 Javascript
jQuery 表单验证插件formValidation实现个性化错误提示
2009/06/23 Javascript
js 实现打印网页中定义的部分内容的代码
2010/04/01 Javascript
js 实现日期灵活格式化的小例子
2013/07/14 Javascript
jQuery学习笔记之jQuery动画效果
2013/09/09 Javascript
借助javascript代码判断网页是静态还是伪静态
2014/05/05 Javascript
JS函数重载的解决方案
2014/05/13 Javascript
jQuery Validate表单验证入门学习
2015/12/18 Javascript
JS定义类的六种方式详解
2016/05/12 Javascript
D3.js实现直方图的方法详解
2016/09/25 Javascript
JS瀑布流实现方法实例分析
2016/12/19 Javascript
Vue监听一个数组id是否与另一个数组id相同的方法
2018/09/26 Javascript
js前端面试之同步与异步问题详解
2019/04/03 Javascript
微信小程序 调用微信授权窗口相关问题解决
2019/07/25 Javascript
vue+elementUi 实现密码显示/隐藏+小图标变化功能
2020/01/18 Javascript
python 统计代码行数简单实例
2017/05/04 Python
Python cookbook(数据结构与算法)找到最大或最小的N个元素实现方法示例
2018/02/13 Python
Python如何实现强制数据类型转换
2019/11/22 Python
浅谈html5 video 移动端填坑记
2018/01/15 HTML / CSS
Zooplus葡萄牙:欧洲领先的网上宠物商店
2018/07/01 全球购物
为什么要优先使用同步代码块而不是同步方法?
2013/01/30 面试题
应届生程序员求职信
2013/11/05 职场文书
公开承诺书格式
2014/05/21 职场文书
法人委托书的范本格式
2014/09/11 职场文书
2014年党建工作汇报材料
2014/10/27 职场文书
2015年元旦促销方案书
2014/12/09 职场文书
法人代表证明书范本
2015/06/18 职场文书
css中z-index: 0和z-index: auto的区别
2021/08/23 HTML / CSS
Win11如何启用启动修复 ? Win11执行启动修复的三种方法
2022/04/08 数码科技
类和原型的设计模式之复制与委托差异
2022/07/07 Javascript