CodeIgniter配置之routes.php用法实例分析

 更新时间:2016年01月19日 15:43:19   作者:老彭  
这篇文章主要介绍了CodeIgniter配置之routes.php用法,结合实例形式分析了routes.php中常用配置参数的含义及具体使用技巧,需要的朋友可以参考下

本文实例分析了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框架相关内容感兴趣的读者可查看本站专题:《codeigniter入门教程

希望本文所述对大家基于CodeIgniter框架的PHP程序设计有所帮助。

相关文章

  • Laravel 在views中加载公共页面的实现代码

    Laravel 在views中加载公共页面的实现代码

    今天小编就为大家分享一篇Laravel 在views中加载公共页面的实现代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-10-10
  • php strncmp函数原型源码分析

    php strncmp函数原型源码分析

    这篇文章主要为大家介绍了php strncmp函数原型源码分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06
  • 在PHP中实现使用Guzzle执行POST和GET请求

    在PHP中实现使用Guzzle执行POST和GET请求

    今天小编就为大家分享一篇在PHP中实现使用Guzzle执行POST和GET请求,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-10-10
  • PHP生成随机密码方法汇总

    PHP生成随机密码方法汇总

    使用PHP开发应用程序,尤其是网站程序,常常需要生成随机密码,如用户注册生成随机密码,用户重置密码也需要生成一个随机的密码,接下来小编给大家介绍php生成随机密码五种方法,需要的朋友可以参考下
    2015-08-08
  • ThinkPHP实现批量删除数据的代码实例

    ThinkPHP实现批量删除数据的代码实例

    这篇文章主要介绍了ThinkPHP实现批量删除数据的代码实例,需要的朋友可以参考下
    2014-07-07
  • Laravel 5.4向IoC容器中添加自定义类的方法示例

    Laravel 5.4向IoC容器中添加自定义类的方法示例

    Laravel这个框架,用起来方便,理解起来不简单。为什么不简单?因为包含了一大堆所谓“先进”的概念,其中依赖注入(DI)和Ioc容器是比较核心的内容之一。下面这篇文章主要给大家介绍了关于Laravel 5.4向IoC容器中添加自定义类的相关资料,需要的朋友可以参考下。
    2017-08-08
  • php 使用array函数实现分页

    php 使用array函数实现分页

    这里给大家分享的是一段php使用array()函数实现分页的代码,算是一种比较另类的分页思路,这里推荐给大家。
    2015-02-02
  • thinkphp3.x中cookie方法的用法分析

    thinkphp3.x中cookie方法的用法分析

    这篇文章主要介绍了thinkphp3.x中cookie方法的用法,结合实例形式分析了thinkPHP中cookie方法的设置、获取、删除等常用操作技巧,需要的朋友可以参考下
    2016-05-05
  • thinkPHP5.0框架简单配置作用域的方法

    thinkPHP5.0框架简单配置作用域的方法

    这篇文章主要介绍了thinkPHP5.0框架简单配置作用域的方法,简单分析了thinkPHP5.0作用域的功能与配置技巧,需要的朋友可以参考下
    2017-03-03
  • PHP中多线程的两个实现方法

    PHP中多线程的两个实现方法

    多线程是java中一个很不错的东西,很多朋友说在php中不可以使用PHP多线程了,其实那是错误的说法,本文就是介绍PHP中多线程的两个实现方法,有兴趣的同学可以看一下。
    2016-10-10

最新评论