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的单引号和双引号 字符串效率
May 27 PHP
php验证手机号码(支持归属地查询及编码为UTF8)
Feb 01 PHP
解决FastCGI 进程超过了配置的活动超时时限的问题
Jul 03 PHP
使用php验证复选框有效性的示例
Nov 13 PHP
PHP错误Allowed memory size of 67108864 bytes exhausted的3种解决办法
Jul 28 PHP
浅谈COOKIE和SESSION区别
Jul 19 PHP
yii数据库的查询方法
Dec 28 PHP
PHP如何将XML转成数组
Apr 04 PHP
PHP通过加锁实现并发情况下抢码功能
Aug 10 PHP
PHP生成图片验证码功能示例
Jan 12 PHP
用PHP将Unicode 转化为UTF-8的实现方法(推荐)
Feb 08 PHP
PHP构造二叉树算法示例
Jun 21 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 变量定义和变量替换的方法
2009/07/30 PHP
Yii入门教程之Yii安装及hello world
2014/11/25 PHP
PHP使用curl函数发送Post请求的注意事项
2016/11/26 PHP
PHP面向对象多态性实现方法简单示例
2017/09/27 PHP
PHP中__set()实例用法和基础讲解
2019/07/23 PHP
php服务器的系统详解
2019/10/12 PHP
YII2框架中日志的配置与使用方法实例分析
2020/03/18 PHP
PJ Blog修改-禁止复制的代码和方法
2006/10/25 Javascript
JQuery动态创建DOM、表单元素的实现代码
2011/08/09 Javascript
关于js数组去重的问题小结
2014/01/24 Javascript
js函数定时器实现定时读取系统实时连接数
2014/04/30 Javascript
JavaScript的兼容性与调试技巧
2016/11/22 Javascript
Vue制作Todo List网页
2017/04/26 Javascript
Node.js 回调函数实例详解
2017/07/06 Javascript
关于Vue背景图打包之后访问路径错误问题的解决
2017/11/03 Javascript
基于vue-ssr服务端渲染入门详解
2018/01/08 Javascript
基于element-ui组件手动实现单选和上传功能
2018/12/06 Javascript
JSON基本语法及与JavaScript的异同实例分析
2019/01/04 Javascript
详解基于node.js的脚手架工具开发经历
2019/01/28 Javascript
vue+elementUI实现简单日历功能
2020/09/24 Javascript
js闭包和垃圾回收机制示例详解
2021/03/01 Javascript
python解决js文件utf-8编码乱码问题(推荐)
2018/05/02 Python
python保存二维数组到txt文件中的方法
2018/11/15 Python
python实现图片横向和纵向拼接
2020/03/05 Python
基于python实现ROC曲线绘制广场解析
2020/06/28 Python
python使用nibabel和sitk读取保存nii.gz文件实例
2020/07/01 Python
python 6行代码制作月历生成器
2020/09/18 Python
人力资源专业推荐信
2013/11/29 职场文书
记者岗位职责
2014/01/06 职场文书
安全生产检查通报
2014/01/29 职场文书
市场部业务员岗位职责
2014/04/02 职场文书
“5.12”护士节主持词
2015/07/04 职场文书
2015国庆节放假通知范文
2015/07/30 职场文书
少先队大队委竞选口号
2015/12/25 职场文书
python lambda 表达式形式分析
2022/04/03 Python
基于redis+lua进行限流的方法
2022/07/23 Redis