加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > PHP > 正文

codeigniter 路由(URL) 优化分析与讲解

发布时间:2020-05-25 01:32:46 所属栏目:PHP 来源:互联网
导读:默认情况下,CodeIgniter 中的 URL 被设计成对搜索引擎和人类友好。本文章向码农介绍codeigniter 路由(URL) 优化分析与讲解,感兴趣的码农可以参考一下。

事前先说明白一点,使用CI开发生成地址应该100%用site_url()辅助函数和相关辅助函数实现,实在不行自己扩展url辅助函数.否则你会遇到或者可能遇到头疼的或潜在的问题.

还有一点要明白anchor() redirect() current_url()等url相关的函数都是通过调用site_url()实现的,也就是说site_url()是最底层的.


搞清楚这些可以阅读下文了.


例如:

要浏览某一篇文章地址很可能如下


http://codehere.net/code/view/81.html

其中code是控制器名称,view是控制器的方法,81是参数一般传递的是文章的ID.

现在要重写城


http://codehere.net/code_81.html

先说下基本原理,首先对地址重写,然后对重写的地址解析.

通过研究CI的源码发现地址生成全部使用url辅助函数site_url,所以从site_url下手


1。扩展原有的url辅助函数


在application目录的helper目录下建立X_url_helper.php (X_是前缀,取决于你的config配置),代码如下

/*

* 调用rewrite的site_url

*/

if(!function_exists('site_url'))

{

functionsite_url($uri='')

{

if(function_exists('rewrite')){

$uri=rewrite($uri);

}

$CI=&get_instance();

return$CI->config->site_url($uri);

}

}

//重写url,用于router中优化url

//在url辅助函数site_url中调用

if(!function_exists('rewrite'))

{

functionrewrite($url){

$CI=&get_instance();

$CI->config->load('rewrite',TRUE);

$rewrite=$CI->config->item('rewrite');

ksort($rewrite['pattern']);

ksort($rewrite['replace']);

$url=preg_replace($rewrite['pattern'],$rewrite['replace'],$url,1);

return$url;

}

}


2。创建重写规则,在config目录下建立rewrite.php文件.

/*

* 在rewrite辅助函数中

*/

$config['pattern']=array();

$config['replace']=array();

//查看code详细内容的

$config['pattern'][0]='/code/view//i';

$config['replace'][0]='code_';

//tags

$config['pattern'][1]='/tags/index/(.+)/i';

$config['replace'][1]='tag_1';


3。对重写的url解析,解析通过config目录下的routes.php实现.

//查看code详细内容

$route['code_(:num)']="code/view/$1";

//tags

$route['tag_(:any)']="tags/index/$1";

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读