分享codeigniter 路由(URL)终极优化
2016-07-14 10:17
274 查看
A8U论坛的开发者发现看样子很有必要发个帖子了,URL格式是如此的重要
转自这里,可以看一下原文.
A8U论坛的开发者发现事前先说明白一点,使用CI开发生成地址应该100%用site_url()辅助函数和相关辅助函数实现,实在不行自己扩展url辅助函数.否则你会遇到或者可能遇到头疼的或潜在的问题.
还有一点要明白anchor() redirect() current_url()等url相关的函数都是通过调用site_url()实现的,也就是说site_url()是最底层的.
搞清楚这些可以阅读下文了.
CI版本 1.7.2
例如:
要浏览某一篇文章地址很可能如下
其中code是控制器名称,view是控制器的方法,81是参数一般传递的是文章的ID.
现在要重写城
先说下基本原理,首先对地址重写,然后对重写的地址解析.
通过研究CI的源码发现地址生成全部使用url辅助函数site_url,所以从site_url下手
1。扩展原有的url辅助函数
在application目录的helper目录下建立X_url_helper.php (X_是前缀,取决于你的config配置),代码如下
PHP复制代码
/*
* 调用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中优化url
//在url辅助函数site_url中调用
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;
}
}
复制代码
2。创建重写规则,在config目录下建立rewrite.php文件.
PHP复制代码 A8U论坛
<?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实现.
PHP复制代码
//查看code详细内容
$route['code_(:num)']="code/view/$1";
//tags
$route['tag_(:any)']="tags/index/$1";
复制代码
转自这里,可以看一下原文.
A8U论坛的开发者发现事前先说明白一点,使用CI开发生成地址应该100%用site_url()辅助函数和相关辅助函数实现,实在不行自己扩展url辅助函数.否则你会遇到或者可能遇到头疼的或潜在的问题.
还有一点要明白anchor() redirect() current_url()等url相关的函数都是通过调用site_url()实现的,也就是说site_url()是最底层的.
搞清楚这些可以阅读下文了.
CI版本 1.7.2
例如:
要浏览某一篇文章地址很可能如下
其中code是控制器名称,view是控制器的方法,81是参数一般传递的是文章的ID.
现在要重写城
先说下基本原理,首先对地址重写,然后对重写的地址解析.
通过研究CI的源码发现地址生成全部使用url辅助函数site_url,所以从site_url下手
1。扩展原有的url辅助函数
在application目录的helper目录下建立X_url_helper.php (X_是前缀,取决于你的config配置),代码如下
PHP复制代码
/*
* 调用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中优化url
//在url辅助函数site_url中调用
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;
}
}
复制代码
2。创建重写规则,在config目录下建立rewrite.php文件.
PHP复制代码 A8U论坛
<?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实现.
PHP复制代码
//查看code详细内容
$route['code_(:num)']="code/view/$1";
//tags
$route['tag_(:any)']="tags/index/$1";
复制代码
相关文章推荐
- Database.NET多数据库管理工具
- Hadoop配置文件
- 学习笔记 java集合
- web开发常见故障处理(一)之Navicat提示Unknown localhost
- Flash SWF 包含一个声音项目的多个副本的解决办法
- 解决eclipse在退出或者重启后再次打开闪退问题
- UML之包图
- NYOK106背包问题
- 如何使用js将canvas保存为图片文件,并且可以自定义文件名
- 集合(数组/字典/集)的内存管理
- lightOJ1032(数位dp)
- c#自定义类型之间的转换(强制类型转换)
- TT3
- 子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,关于触发器SQL语句,完美解决
- React 使用fromidable 模块进行文件上传出现First argument must be a string 的解析错误的原因
- 设置UITextField的placeholder的颜色代码片段:
- Postgres常用查询语句
- FRAM(铁电存储器)
- 音频流的蓝牙传输
- 在线破解idea,一键破解idea,url破解idea