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学习 变量使用总结
Mar 24 PHP
PHP setcookie指定domain参数后,在IE下设置cookie失效的解决方法
Sep 09 PHP
php字符串截取的简单方法
Jul 04 PHP
使用openssl实现rsa非对称加密算法示例
Jan 24 PHP
PHP_Cooikes不同页面无法传递的解决方法
Mar 07 PHP
常用PHP框架功能对照表
Oct 23 PHP
php curl登陆qq后获取用户信息时证书错误
Feb 03 PHP
WordPress主题制作中自定义头部的相关PHP函数解析
Jan 08 PHP
php基于单例模式封装mysql类完整实例
Oct 18 PHP
PHP使用PDO访问oracle数据库的步骤详解
Sep 29 PHP
php 处理png图片白色背景色改为透明色的实例代码
Dec 10 PHP
PHP实现的杨辉三角求解算法分析
Mar 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
PHP连接局域网MYSQL数据库的简单实例
2013/08/26 PHP
destoon切换城市后实现logo旁边显示地区名称的方法
2014/08/21 PHP
PHP工厂模式、单例模式与注册树模式实例详解
2019/06/03 PHP
JS BASE64编码 window.atob(), window.btoa()
2021/03/09 Javascript
JavaScript中的new的使用方法与注意事项
2007/05/16 Javascript
一个简单的javascript类定义例子
2009/09/12 Javascript
javascript中interval与setTimeOut的区别示例介绍
2014/03/14 Javascript
node.js中的fs.chmodSync方法使用说明
2014/12/18 Javascript
jQuery实现简单下拉导航效果
2015/09/07 Javascript
一波JavaScript日期判断脚本分享
2016/03/06 Javascript
jQuery与JS加载事件用法分析
2016/09/04 Javascript
vue 实现 tomato timer(蕃茄钟)实例讲解
2017/07/24 Javascript
vue mint-ui学习笔记之picker的使用
2017/10/11 Javascript
基于Vue实现图书管理功能
2017/10/17 Javascript
基于Two.js实现星球环绕动画效果的示例
2017/11/06 Javascript
nodejs项目windows下开机自启动的方法
2017/11/22 NodeJs
JS+H5 Canvas实现时钟效果
2018/07/20 Javascript
layui点击按钮添加可编辑的一行方法
2018/08/15 Javascript
实例详解Vue项目使用eslint + prettier规范代码风格
2018/08/20 Javascript
详解vue项目中调用百度地图API使用方法
2019/04/25 Javascript
简单了解vue.js数组的常用操作
2019/06/17 Javascript
[04:32]DOTA2著名解说配音敌法师 现场专访海涛怒切假腿
2013/12/20 DOTA
Python 时间操作例子和时间格式化参数小结
2014/04/24 Python
python新手经常遇到的17个错误分析
2014/07/30 Python
Python学习思维导图(必看篇)
2017/06/26 Python
python 二分查找和快速排序实例详解
2017/10/13 Python
HTML5+CSS3实例 :canvas 模拟实现电子彩票刮刮乐代码
2016/12/30 HTML / CSS
德国运动营养和健身网上商店:Myprotein.de
2018/07/18 全球购物
审核会计岗位职责
2013/11/08 职场文书
网吧消防安全制度
2014/01/28 职场文书
初级党校心得体会
2014/09/11 职场文书
向国旗敬礼活动总结范文2014
2014/09/27 职场文书
承德避暑山庄导游词
2015/02/03 职场文书
2016年全国爱牙日宣传活动总结
2016/04/05 职场文书
《悲惨世界》:比天空更广阔的是人的心灵
2020/01/16 职场文书
小程序实现悬浮按钮的全过程记录
2021/10/16 HTML / CSS