专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-963-0016      微信咨询  |  联系我们

CodeIgniter配置之router

当前位置:网站建设 > 技术支持
资料来源:网络整理       时间:2023/2/14 0:06:45       共计:3640 浏览
application/config/routes.php中定义了一个名为$route的数组,用来设置默认路由和404页面以及可以设置一些匹配方式。 默认的配置如下:
PHP复制代码  
$route['default_controller'] = "welcome";
 
$route['404_override'] = '';
  复制代码
default_controller指定默认的控制器名称,404_override指定当出现404时调用的控制器名称。有时候可能出现解析不成功,或者一直在默认页面,我们可以调用$this->router打印一下当前解析的控制器和Acion名称。比如可以在MY_Controller中如下打印:
PHP复制代码  
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并不支持包含查询字符串的重写规则,这个规则看起来应当这么写:
PHP复制代码  
$route['admin/detail_(:num)'] = 'admin/detail?user_id=$1';
  复制代码
但实际上并未生效,程序匹配到admin/detail?user_id=1后用"/"分隔,索引为0的为控制器名,索引为1的为方法名,也就是会将上面的 detail?user_id=1赋值给方法名,结果可想而知就404了。搞清分隔原理后可以在detail后面增加一个斜杠,确保类名和方法名的正确,如:
PHP复制代码  
$route['admin/detail_(:num)'] = 'admin/detail/?user_id=$1';
  复制代码
但此时又存在参数的获取问题了,会将第三个参数传递给方法,如果需要使用$_GET或者$this->input->get获取还需要对参数进行处理,如:
PHP复制代码  
parse_str(ltrim($query_string, '?'), $_GET);
  复制代码
2、对PATH_INFO的URL形式重写规则还是比较支持的。如要实现http://pc.local/admin/1这种格式:
PHP复制代码  
$route['admin/(:num)'] = 'admin/detail/$1';
  复制代码
参数的获取就只能通过段落的方式来获取了。 注意: 路由将会按照定义的顺序来运行.高层的路由总是优先于低层的路由. 最后,能使用CI来设置的路由还是建议使用CI来设置,不依赖服务器配置。
版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
·上一条:CodeIgniter配置之database | ·下一条:CodeIgniter配置之config

Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有    粤ICP备16019765号 

广州京杭网络科技有限公司 版权所有