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 相关文章推荐
Mysql数据库操作类( 1127版,提供源码下载 )
Dec 02 PHP
PHP投票系统防刷票判断流程分析
Feb 04 PHP
iis下php mail函数的sendmail配置方法(官方推荐)
Apr 25 PHP
php中inlcude()性能对比详解
Sep 16 PHP
PHP echo,print,printf,sprintf函数之间的区别与用法详解
Nov 27 PHP
php判断手机访问还是电脑访问示例分享
Jan 20 PHP
php 获取SWF动画截图示例代码
Feb 10 PHP
PHP输出图像imagegif、imagejpeg与imagepng函数用法分析
Nov 14 PHP
php 使用curl模拟ip和来源进行访问的实现方法
May 02 PHP
PHP迭代与递归实现无限级分类
Aug 28 PHP
php插件Xajax使用方法详解
Aug 31 PHP
PHP PDOStatement::bindColumn讲解
Jan 30 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插入排序实现代码
2013/04/04 PHP
php 伪造HTTP_REFERER页面URL来源的三种方法
2016/09/22 PHP
浅谈PHP中的错误处理和异常处理
2017/02/04 PHP
php-app开发接口加密详解
2018/04/18 PHP
解决在Laravel 中处理OPTIONS请求的问题
2019/10/11 PHP
Firefox+FireBug使JQuery的学习更加轻松愉快
2010/01/01 Javascript
javascript一些实用技巧小结
2011/03/18 Javascript
纯js写的分页表格数据为json串
2014/02/18 Javascript
JS生成随机字符串的多种方法
2014/06/10 Javascript
JS+CSS实现带关闭按钮DIV弹出窗口的方法
2015/02/27 Javascript
js Canvas绘制圆形时钟教程
2017/02/06 Javascript
Bootstrap选项卡学习笔记分享
2017/02/13 Javascript
JavaScript的级联函数用法简单示例【链式调用】
2019/03/26 Javascript
webpack3.0升级4.0的方法步骤
2020/04/02 Javascript
autojs 蚂蚁森林能量自动拾取即给指定好友浇水的实现方法
2020/05/03 Javascript
基于小程序请求接口wx.request封装的类axios请求
2020/07/02 Javascript
[05:56]第十六期——新进3大C之小兔基
2014/06/24 DOTA
python numpy元素的区间查找方法
2018/11/14 Python
python使用selenium实现批量文件下载
2019/03/11 Python
详解Python 定时框架 Apscheduler原理及安装过程
2019/06/14 Python
pandas取出重复数据的方法
2019/07/04 Python
pycharm 批量修改变量名称的方法
2019/08/01 Python
pytorch 图像中的数据预处理和批标准化实例
2020/01/15 Python
基于python-pptx库中文文档及使用详解
2020/02/14 Python
python GUI库图形界面开发之PyQt5时间控件QTimer详细使用方法与实例
2020/02/26 Python
python 异步async库的使用说明
2020/05/04 Python
Python3.7安装pyaudio教程解析
2020/07/24 Python
中国医药集团国药在线:国药网
2017/02/06 全球购物
英国第一职业高尔夫商店:Clickgolf.co.uk
2020/11/18 全球购物
体育专业求职信
2014/07/16 职场文书
2015教师见习期工作总结
2014/12/12 职场文书
布达拉宫导游词
2015/02/02 职场文书
刘公岛导游词
2015/02/05 职场文书
党员个人总结范文
2015/02/14 职场文书
地球上的星星观后感
2015/06/02 职场文书
写作技巧:如何撰写一份优秀的营销策划书
2019/08/13 职场文书