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之第九天
Oct 09 PHP
PHP开发中四种查询返回结果分析
Jan 02 PHP
查找mysql字段中固定字符串并替换的几个方法
Sep 23 PHP
php常用ODBC函数集(详细)
Jun 24 PHP
Linux中用PHP判断程序运行状态的2个方法
May 04 PHP
PHP中文乱码解决方案
Mar 05 PHP
php-redis中的sort排序函数总结
Jul 08 PHP
PHP生成随机字符串(3种方法)
Sep 25 PHP
php 数组处理函数extract详解及实例代码
Nov 23 PHP
用PHP将Unicode 转化为UTF-8的实现方法(推荐)
Feb 08 PHP
使用PHP连接数据库_实现用户数据的增删改查的整体操作示例
Sep 01 PHP
Thinkphp5框架异常处理操作实例分析
Jun 03 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实现字符串反转输出的方法
2015/03/14 PHP
php实现递归抓取网页类实例
2015/04/03 PHP
制作个性化的WordPress登陆界面的实例教程
2016/05/21 PHP
基于jquery的分页控件(C#)
2011/01/06 Javascript
jQuery在IE下使用未闭合的xml代码创建元素时的Bug介绍
2012/01/10 Javascript
jQuery Tools Dateinput使用介绍
2012/07/14 Javascript
js控制滚动条缓慢滚动到顶部实现代码
2013/03/20 Javascript
利用js 进行输入框自动匹配字符的小例子
2013/06/29 Javascript
Javascript异步编程模型Promise模式详细介绍
2014/05/08 Javascript
基于javascript实现判断移动终端浏览器版本信息
2014/12/09 Javascript
基于Javascript实现弹出页面效果
2016/01/01 Javascript
iscroll.js的上拉下拉刷新时无法回弹的解决方法
2016/02/18 Javascript
jquery使用FormData实现异步上传文件
2018/10/25 jQuery
vue打包之后生成一个配置文件修改接口的方法
2018/12/09 Javascript
vue组件之间通信方式实例总结【8种方式】
2019/02/22 Javascript
ES6入门教程之let、const的使用方法
2019/04/13 Javascript
详解JavaScript数据类型和判断方法
2020/09/04 Javascript
[01:11:46]DOTA2-DPC中国联赛 正赛 iG vs Magma BO3 第一场 2月23日
2021/03/11 DOTA
Python中字典和JSON互转操作实例
2015/01/19 Python
对numpy 数组和矩阵的乘法的进一步理解
2018/04/04 Python
python 实现一次性在文件中写入多行的方法
2019/01/28 Python
python爬虫 urllib模块发起post请求过程解析
2019/08/20 Python
在Python中预先初始化列表内容和长度的实现
2019/11/28 Python
TensorFlow实现保存训练模型为pd文件并恢复
2020/02/06 Python
html5中监听canvas内部元素点击事件的三种方法
2019/04/28 HTML / CSS
萨克斯第五大道的折扣店:Saks Fifth Avenue OFF 5TH
2016/08/25 全球购物
Java的类可以定义为Protected或者Private得吗
2015/09/25 面试题
护士实习自我鉴定
2013/10/22 职场文书
物业管理计划书
2014/01/10 职场文书
六年级数学教学反思
2014/02/03 职场文书
写给父母的感谢信
2015/01/22 职场文书
2015学习委员工作总结范文
2015/04/03 职场文书
二婚主持词
2015/06/30 职场文书
2016高一新生军训心得体会
2016/01/11 职场文书
mysql 8.0.24版本安装配置方法图文教程
2021/05/12 MySQL
nginx之内存池的实现
2022/06/28 Servers