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 编程请选择正确的文本编辑软件
Dec 21 PHP
PHP 透明水印生成代码
Aug 27 PHP
比较简单的百度网盘文件直链PHP代码
Mar 24 PHP
解析php中die(),exit(),return的区别
Jun 20 PHP
用php简单实现加减乘除计算器
Jan 06 PHP
使用PHP实现下载CSS文件中的图片
Dec 06 PHP
PHP 7.0.2 正式版发布
Jan 08 PHP
Symfony2 session用法实例分析
Feb 04 PHP
PHP实现的限制IP投票程序IP来源分析
May 04 PHP
PHP实现打包zip并下载功能
Jun 12 PHP
ThinkPHP框架结合Ajax实现用户名校验功能示例
Jul 03 PHP
PHP+fiddler抓包采集微信文章阅读数点赞数的思路详解
Dec 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中实现生成静态文件的方法缓解服务器压力
2014/01/07 PHP
PHPer 需要了解的 5 个 Composer 小技巧
2014/08/18 PHP
php对象和数组相互转换的方法
2015/05/12 PHP
详解PHP用substr函数截取字符串中的某部分
2016/12/03 PHP
模仿jQuery each函数的链式调用
2009/07/22 Javascript
javascript中全局对象的isNaN()方法使用介绍
2013/12/19 Javascript
键盘上一张下一张兼容IE/google/firefox等浏览器
2014/01/28 Javascript
js判断手机端(Android手机还是iPhone手机)
2015/07/22 Javascript
jQuery如何获取动态添加的元素
2016/06/24 Javascript
jQuery实现鼠标经过购物车出现下拉框代码(推荐)
2016/07/21 Javascript
vue中将网页打印成pdf实例代码
2017/06/15 Javascript
关于JavaScript中forEach和each用法浅析
2017/07/27 Javascript
浅谈Vuejs Prop基本用法
2017/08/17 Javascript
vue 项目如何引入微信sdk接口的方法
2017/12/18 Javascript
angularJs 表格添加删除修改查询方法
2018/02/27 Javascript
vue3.0 CLI - 2.4 - 新组件 Forms.vue 中学习表单
2018/09/14 Javascript
使用ng-packagr打包Angular的方法示例
2018/09/21 Javascript
vue-router两种模式区别及使用注意事项详解
2019/08/01 Javascript
Vue开发中遇到的跨域问题及解决方法
2020/02/11 Javascript
JavaScript队列结构Queue实现过程解析
2020/03/07 Javascript
详解Typescript 内置的模块导入兼容方式
2020/05/31 Javascript
node.js文件的复制、创建文件夹等相关操作
2021/02/05 Javascript
[06:43]2018DOTA2国际邀请赛寻真——VGJ.Thunder
2018/08/11 DOTA
Python统计日志中每个IP出现次数的方法
2015/07/06 Python
python 网络爬虫初级实现代码
2016/02/27 Python
使用python读取.text文件特定行的数据方法
2019/01/28 Python
python获取整个网页源码的方法
2020/08/03 Python
css3使网页、图片变成灰色兼容大多数浏览器
2014/07/02 HTML / CSS
护士自我鉴定范文
2013/10/06 职场文书
护士自荐信怎么写
2013/10/18 职场文书
校长岗位职责
2013/11/26 职场文书
银行演讲稿范文
2014/01/03 职场文书
商场中秋节广播稿
2014/01/17 职场文书
消防器材管理制度
2014/01/28 职场文书
大学生心理活动总结
2014/07/04 职场文书
go结构体嵌套的切片数组操作
2021/04/28 Golang