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 相关文章推荐
不用iconv库的gb2312与utf-8的互换函数
Oct 09 PHP
深入理解curl类,可用于模拟get,post和curl下载
Jun 08 PHP
PHP中提问频率最高的11个面试题和答案
Sep 02 PHP
PHP实现在线阅读PDF文件的方法
Jun 23 PHP
PHP处理二进制数据的实现方法
Jun 13 PHP
PHP开发制作一个简单的活动日程表Calendar
Jun 20 PHP
php cookie工作原理与实例详解
Jul 18 PHP
PHP简单数据库操作类实例【支持增删改查及链式操作】
Oct 10 PHP
ubutu 16.04环境下,PHP与mysql数据库,网页登录验证实例讲解
Jul 20 PHP
PHP高效获取远程图片尺寸和大小的实现方法
Oct 20 PHP
PHP删除数组中指定下标的元素方法
Feb 03 PHP
购物车实现的几种方式优缺点对比
May 02 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
DC《神奇女侠2》因疫情推迟上映 温子仁新恐怖片《恶性》撤档
2020/04/09 欧美动漫
删除无限分类并同时删除它下面的所有子分类的方法
2010/08/08 PHP
php explode函数实例代码
2012/02/27 PHP
适用于初学者的简易PHP文件上传类
2015/10/29 PHP
PHP单链表的实现代码
2016/07/05 PHP
Yii框架实现多数据库配置和操作的方法
2017/05/25 PHP
JQuery 中几个类选择器的简单使用介绍
2013/03/14 Javascript
JavaScript定义数组的三种方法(new Array(),new Array('x','y')
2016/10/04 Javascript
bootstrap读书笔记之CSS组件(上)
2016/10/17 Javascript
数组Array的排序sort方法
2017/02/17 Javascript
详解在vue-cli中使用路由
2017/09/25 Javascript
微信小程序scroll-view组件实现滚动动画
2018/01/31 Javascript
用 js 写一个 js 解释器过程详解
2019/08/02 Javascript
Vue 中可以定义组件模版的几种方式
2019/08/06 Javascript
Nest.js 授权验证的方法示例
2021/02/22 Javascript
python生成随机验证码(中文验证码)示例
2014/04/03 Python
bat和python批量重命名文件的实现代码
2016/05/19 Python
基于python时间处理方法(详解)
2017/08/14 Python
使用python opencv对目录下图片进行去重的方法
2019/01/12 Python
使用matplotlib动态刷新指定曲线实例
2020/04/23 Python
Python脚本实现监听服务器的思路代码详解
2020/05/28 Python
keras训练浅层卷积网络并保存和加载模型实例
2020/07/02 Python
python 实现ping测试延迟的两种方法
2020/12/10 Python
html5的画布canvas——画出简单的矩形、三角形实例代码
2013/06/09 HTML / CSS
HTML5注册表单的自动聚焦与占位文本示例代码
2013/07/19 HTML / CSS
美国顶级户外凉鞋品牌:Chacos
2017/03/27 全球购物
C/C++程序员常见面试题二
2015/11/19 面试题
TCP协议通讯的过程和步骤是什么
2015/10/18 面试题
大学生的应聘自我评价
2013/12/13 职场文书
列车长先进事迹材料
2014/01/25 职场文书
小学生操行评语大全
2014/04/22 职场文书
环保建议书300字
2014/05/14 职场文书
政府个人对照检查材料
2014/08/28 职场文书
离婚协议书范文2014(夫妻感情破裂)
2014/12/14 职场文书
专家推荐信范文
2015/03/26 职场文书
Python获取百度热搜的完整代码
2021/04/07 Python