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中的类-什么叫类
Nov 20 PHP
PHP CodeBase:将时间显示为"刚刚""n分钟/小时前"的方法详解
Jun 06 PHP
phpmyadmin config.inc.php配置示例
Aug 27 PHP
ECMall支持SSL连接邮件服务器的配置方法详解
May 19 PHP
php实现的Timer页面运行时间监测类
Sep 24 PHP
php获取textarea的值并处理回车换行的方法
Oct 20 PHP
PHP基于反射机制实现插件的可插拔设计详解
Nov 10 PHP
PHP简单验证码功能机制实例详解
Mar 27 PHP
php intval函数用法总结
Apr 14 PHP
关于Yii2框架跑脚本时内存泄漏问题的分析与解决
Dec 01 PHP
PHP使用openssl扩展实现加解密方法示例
Feb 20 PHP
php使用redis的几种常见操作方式和用法示例
Feb 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支付宝接口用法分析
2015/01/04 PHP
在Linux系统下一键重新安装WordPress的脚本示例
2015/06/30 PHP
php递归函数怎么用才有效
2018/02/24 PHP
javascript 写类方式之三
2009/07/05 Javascript
js 数组实现一个类似ruby的迭代器
2009/10/27 Javascript
js函数返回多个返回值的示例代码
2013/11/05 Javascript
深入领悟JavaScript中的面向对象
2013/11/18 Javascript
js获取下拉列表框中的value和text的值示例代码
2014/01/11 Javascript
js鼠标点击图片实现随机变换图片的方法
2015/02/16 Javascript
JavaScript 动态加载脚本和样式的方法
2015/04/13 Javascript
关于JS中prototype的理解
2015/09/07 Javascript
js精准的倒计时函数分享
2016/06/29 Javascript
jQuery实现最简单实用的分秒倒计时
2017/02/05 Javascript
javascript深拷贝和浅拷贝详解
2017/02/14 Javascript
Bootstrap警告(Alerts)的实现方法
2017/03/22 Javascript
jQuery实现的背景颜色渐变动画效果示例
2017/03/24 jQuery
bootstrap是什么_动力节点Java学院整理
2017/07/14 Javascript
浅谈webpack下的AOP式无侵入注入
2017/11/12 Javascript
webpack file-loader和url-loader的区别
2019/01/15 Javascript
JS字符串常用操作方法实例小结
2019/06/24 Javascript
文章或博客自动生成章节目录索引(支持三级)的实现代码
2020/05/10 Javascript
[02:28]DOTA2亚洲邀请赛 LGD战队巡礼
2015/02/03 DOTA
python中bisect模块用法实例
2014/09/25 Python
Python第三方库xlrd/xlwt的安装与读写Excel表格
2017/01/21 Python
python 寻找优化使成本函数最小的最优解的方法
2017/12/28 Python
用Python下载一个网页保存为本地的HTML文件实例
2018/05/21 Python
Django之使用celery和NGINX生成静态页面实现性能优化
2019/10/08 Python
tensorflow之变量初始化(tf.Variable)使用详解
2020/02/06 Python
pycharm如何实现跨目录调用文件
2020/02/28 Python
Keras 加载已经训练好的模型进行预测操作
2020/06/17 Python
异步传递消息系统的作用
2016/05/01 面试题
《只有一个地球》教学反思
2014/02/14 职场文书
护士上岗前培训自我鉴定
2014/04/20 职场文书
Python 使用dict实现switch的操作
2021/04/07 Python
python opencv将多个图放在一个窗口的实例详解
2022/02/28 Python
win10识别不了U盘怎么办 win10系统读取U盘失败的解决办法
2022/08/05 数码科技