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与javascript的两种交互方式
Oct 09 PHP
PHP 压缩文件夹的类代码
Nov 05 PHP
php smarty 二级分类代码和模版循环例子
Jun 16 PHP
php对二维数组进行排序的简单实例
Dec 19 PHP
PHP实现通过URL提取根域名
Mar 31 PHP
PHP简单获取及判断提交来源的方法
Apr 22 PHP
php array_multisort 对数组进行排序详解及实例代码
Oct 27 PHP
浅谈PHP中的Trait使用方法
Mar 22 PHP
PHP中遍历数组的三种常用方法实例分析
Jun 24 PHP
php异常处理捕获错误整理
Sep 23 PHP
php解决约瑟夫环算法实例分析
Sep 30 PHP
Yii框架getter与setter方法功能与用法分析
Oct 22 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
把从SQL中取出的数据转化成XMl格式
2006/10/09 PHP
BBS(php & mysql)完整版(五)
2006/10/09 PHP
php htmlspecialchars加强版
2010/02/16 PHP
PHP Oauth授权和本地加密实现方法
2016/08/12 PHP
自制PHP框架之模型与数据库
2017/05/07 PHP
PHP实现深度优先搜索算法(DFS,Depth First Search)详解
2017/09/16 PHP
docker-compose部署php项目实例详解
2019/07/30 PHP
laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析
2019/12/20 PHP
jQuery 学习入门篇附实例代码
2010/03/16 Javascript
鼠标滑在标题上显示图片的JS代码
2013/11/19 Javascript
javascript新建标签,判断键盘输入,以及判断焦点(示例代码)
2013/11/25 Javascript
JS关键字球状旋转效果的实例代码
2013/11/29 Javascript
jQuery filter函数使用方法
2014/05/19 Javascript
jQuery插件AjaxFileUpload实现ajax文件上传
2016/05/05 Javascript
详解JavaScript实现设计模式中的适配器模式的方法
2016/05/18 Javascript
获取jqGrid中选择的行的数据
2016/11/30 Javascript
基于vue配置axios的方法步骤
2017/11/09 Javascript
详解webpack编译多页面vue项目的配置问题
2017/12/11 Javascript
使用bootstrap实现下拉框搜索功能的实例讲解
2018/08/10 Javascript
小程序文字跑马灯效果
2018/12/28 Javascript
js图数据结构处理 迪杰斯特拉算法代码实例
2019/09/11 Javascript
node.js文件操作系统实例详解
2019/11/05 Javascript
浅析JavaScript 函数柯里化
2020/09/08 Javascript
浅谈keras中的keras.utils.to_categorical用法
2020/07/02 Python
python如何建立全零数组
2020/07/19 Python
会计专业大学生职业生涯规划范文
2014/01/11 职场文书
试用期员工考核制度
2014/01/22 职场文书
法制报告会主持词
2014/04/02 职场文书
党的群众路线教育实践活动整改方案
2014/10/28 职场文书
民政局未婚证明
2015/06/15 职场文书
运动会100米加油稿
2015/07/21 职场文书
golang判断key是否在map中的代码
2021/04/24 Golang
教你使用pyinstaller打包Python教程
2021/05/27 Python
Python 多线程处理任务实例
2021/11/07 Python
vue整合百度地图显示指定地点信息
2022/04/06 Vue.js
mysql sock 文件解析及作用讲解
2022/07/15 MySQL