當(dāng)前位置:
首頁 >
分享codeigniter 路由(URL)终极优化
發(fā)布時(shí)間:2025/3/15
29
豆豆
生活随笔
收集整理的這篇文章主要介紹了
分享codeigniter 路由(URL)终极优化
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
A8U論壇的開發(fā)者發(fā)現(xiàn)看樣子很有必要發(fā)個(gè)帖子了,URL格式是如此的重要
轉(zhuǎn)自這里,可以看一下原文.
A8U論壇的開發(fā)者發(fā)現(xiàn)事前先說明白一點(diǎn),使用CI開發(fā)生成地址應(yīng)該100%用site_url()輔助函數(shù)和相關(guān)輔助函數(shù)實(shí)現(xiàn),實(shí)在不行自己擴(kuò)展url輔助函數(shù).否則你會(huì)遇到或者可能遇到頭疼的或潛在的問題.
還有一點(diǎn)要明白anchor() redirect() current_url()等url相關(guān)的函數(shù)都是通過調(diào)用site_url()實(shí)現(xiàn)的,也就是說site_url()是最底層的.
搞清楚這些可以閱讀下文了.
CI版本 1.7.2
例如:
要瀏覽某一篇文章地址很可能如下
其中code是控制器名稱,view是控制器的方法,81是參數(shù)一般傳遞的是文章的ID.
現(xiàn)在要重寫城
先說下基本原理,首先對(duì)地址重寫,然后對(duì)重寫的地址解析.
通過研究CI的源碼發(fā)現(xiàn)地址生成全部使用url輔助函數(shù)site_url,所以從site_url下手
1。擴(kuò)展原有的url輔助函數(shù)
在application目錄的helper目錄下建立X_url_helper.php (X_是前綴,取決于你的config配置),代碼如下
PHP復(fù)制代碼
? /*
?* 調(diào)用rewrite的site_url
?*/
if ( ! function_exists('site_url'))
{
?function site_url($uri = '')
?{
? if(function_exists('rewrite')){
? ?$uri=rewrite($uri);
? }
? $CI =& get_instance();
? return $CI->config->site_url($uri);
?}
}
//重寫url,用于router中優(yōu)化url
//在url輔助函數(shù)site_url中調(diào)用
if ( ! function_exists('rewrite'))
{
?function rewrite($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;
?}
}
復(fù)制代碼
2。創(chuàng)建重寫規(guī)則,在config目錄下建立rewrite.php文件.
PHP復(fù)制代碼 A8U論壇
? <?php?
/*
?* 在rewrite輔助函數(shù)中
?*/
$config['pattern']=array();
$config['replace']=array();
//查看code詳細(xì)內(nèi)容的
$config['pattern'][0]='/code\/view\//i';
$config['replace'][0]='code_';
//tags
$config['pattern'][1]='/tags\/index\/(.+)/i';
$config['replace'][1]='tag_\\1';
復(fù)制代碼
3。對(duì)重寫的url解析,解析通過config目錄下的routes.php實(shí)現(xiàn).
PHP復(fù)制代碼
? //查看code詳細(xì)內(nèi)容
$route['code_(:num)']="code/view/$1";
//tags
$route['tag_(:any)']="tags/index/$1";
復(fù)制代碼
轉(zhuǎn)自這里,可以看一下原文.
A8U論壇的開發(fā)者發(fā)現(xiàn)事前先說明白一點(diǎn),使用CI開發(fā)生成地址應(yīng)該100%用site_url()輔助函數(shù)和相關(guān)輔助函數(shù)實(shí)現(xiàn),實(shí)在不行自己擴(kuò)展url輔助函數(shù).否則你會(huì)遇到或者可能遇到頭疼的或潛在的問題.
還有一點(diǎn)要明白anchor() redirect() current_url()等url相關(guān)的函數(shù)都是通過調(diào)用site_url()實(shí)現(xiàn)的,也就是說site_url()是最底層的.
搞清楚這些可以閱讀下文了.
CI版本 1.7.2
例如:
要瀏覽某一篇文章地址很可能如下
其中code是控制器名稱,view是控制器的方法,81是參數(shù)一般傳遞的是文章的ID.
現(xiàn)在要重寫城
先說下基本原理,首先對(duì)地址重寫,然后對(duì)重寫的地址解析.
通過研究CI的源碼發(fā)現(xiàn)地址生成全部使用url輔助函數(shù)site_url,所以從site_url下手
1。擴(kuò)展原有的url輔助函數(shù)
在application目錄的helper目錄下建立X_url_helper.php (X_是前綴,取決于你的config配置),代碼如下
PHP復(fù)制代碼
? /*
?* 調(diào)用rewrite的site_url
?*/
if ( ! function_exists('site_url'))
{
?function site_url($uri = '')
?{
? if(function_exists('rewrite')){
? ?$uri=rewrite($uri);
? }
? $CI =& get_instance();
? return $CI->config->site_url($uri);
?}
}
//重寫url,用于router中優(yōu)化url
//在url輔助函數(shù)site_url中調(diào)用
if ( ! function_exists('rewrite'))
{
?function rewrite($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;
?}
}
復(fù)制代碼
2。創(chuàng)建重寫規(guī)則,在config目錄下建立rewrite.php文件.
PHP復(fù)制代碼 A8U論壇
? <?php?
/*
?* 在rewrite輔助函數(shù)中
?*/
$config['pattern']=array();
$config['replace']=array();
//查看code詳細(xì)內(nèi)容的
$config['pattern'][0]='/code\/view\//i';
$config['replace'][0]='code_';
//tags
$config['pattern'][1]='/tags\/index\/(.+)/i';
$config['replace'][1]='tag_\\1';
復(fù)制代碼
3。對(duì)重寫的url解析,解析通過config目錄下的routes.php實(shí)現(xiàn).
PHP復(fù)制代碼
? //查看code詳細(xì)內(nèi)容
$route['code_(:num)']="code/view/$1";
//tags
$route['tag_(:any)']="tags/index/$1";
復(fù)制代碼
總結(jié)
以上是生活随笔為你收集整理的分享codeigniter 路由(URL)终极优化的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 帆软发布大数据直连引擎FineDirec
- 下一篇: 【转载】那么明亮的sz4j