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版(3)
Oct 09 PHP
为PHP初学者的8点有效建议
Nov 20 PHP
php XPath对XML文件查找及修改实现代码
Jul 27 PHP
php eval函数用法 PHP中eval()函数小技巧
Oct 31 PHP
php基于curl实现的股票信息查询类实例
Nov 11 PHP
PHP 获取指定地区的天气实例代码
Feb 08 PHP
PHP实现图片的等比缩放和Logo水印功能示例
May 04 PHP
PHP实现的登录页面信息提示功能示例
Jul 24 PHP
PHP实现的简单在线计算器功能示例
Aug 02 PHP
详谈symfony window下的安装 安装时候出现的问题以及解决方法
Sep 28 PHP
php+ajax实现仿百度查询下拉内容功能示例
Oct 20 PHP
PHP用swoole+websocket和redis实现web一对一聊天
Nov 05 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
8个出色的WordPress SEO插件收集
2011/02/26 PHP
抓取并下载CSS中所有图片文件的php代码
2011/09/26 PHP
PHP屏蔽蜘蛛访问代码及常用搜索引擎的HTTP_USER_AGENT
2013/03/06 PHP
PHP判断手机是IOS还是Android
2015/12/09 PHP
基于php判断客户端类型
2016/10/14 PHP
PHP使用递归按层级查找数据的方法
2019/11/10 PHP
javascript实现原生ajax的几种方法介绍
2013/09/21 Javascript
javascript禁用键盘功能键让右击及其他键无效
2013/10/09 Javascript
javascript实现Email邮件显示与删除功能
2015/11/21 Javascript
Node.js开发者必须了解的4个JS要点
2016/02/21 Javascript
jQuery zTree树插件简单使用教程
2017/01/10 Javascript
详解ElementUI之表单验证、数据绑定、路由跳转
2017/06/21 Javascript
nodejs 图片预览和上传的示例代码
2017/09/30 NodeJs
浅析node应用的timing-attack安全漏洞
2018/02/28 Javascript
Vue项目使用CDN优化首屏加载问题
2018/04/01 Javascript
微信小程序使用wxParse解析html的方法示例
2019/01/17 Javascript
javascript json字符串到json对象转义问题
2019/01/22 Javascript
vue 实现 rem 布局或vw 布局的方法
2019/11/13 Javascript
nuxt 实现在其它js文件中使用store的方式
2020/11/05 Javascript
python通过pil将图片转换成黑白效果的方法
2015/03/16 Python
Python中支持向量机SVM的使用方法详解
2017/12/26 Python
对python 操作solr索引数据的实例详解
2018/12/07 Python
keras模型可视化,层可视化及kernel可视化实例
2020/01/24 Python
Python发起请求提示UnicodeEncodeError错误代码解决方法
2020/04/21 Python
python3让print输出不换行的方法
2020/08/24 Python
Css3实现无缝滚动防抖
2020/09/14 HTML / CSS
北京华建集团SQL面试题
2014/06/03 面试题
党员公开承诺书和承诺事项
2014/03/25 职场文书
单位一把手群众路线四风问题整改措施
2014/09/25 职场文书
岗位竞聘报告范文
2014/11/06 职场文书
换届选举主持词
2015/07/03 职场文书
2015初中政治教学工作总结
2015/07/21 职场文书
2015年店长个人工作总结
2015/10/23 职场文书
2016年师德学习心得体会
2016/01/12 职场文书
Java数据开发辅助工具Docker与普通程序使用方法
2021/09/15 Java/Android
JavaScript阻止事件冒泡的方法
2021/12/06 Javascript