codeigniter 路由(URL) 优化分析与讲解
时间:2016-05-12
默认情况下,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'))
{
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
/*
* 在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";
- 地图知识-坐标网
- silverlight/xap如何接收参数?
- Silverlight中多个Xaml("场景"? or "窗口"? )之间的切换/调用/弹出/传参数问题小结
- Keepalived使用梳理
- mysql操作命令梳理(4)-中文乱码问题
- 今日头条李磊:机器写作与 AI 辅助创作
- 【1】CommonCode快速代码集
- mysql操作命令梳理(3)-pager
- 前后端协调处理checkbox
- mysql操作命令梳理(2)-alter(update、insert)
- 测试数据的整理(1)
- redis持久化策略梳理及主从环境下的策略调整记录
- 测试数据——有效范围(2)
- 交通部:明年将制定无人驾驶政策
- php概述
- php教程
- php环境搭建
- PHP书写格式
- php变量
- php常量
- PHP注释
- php数组
- php字符串 string
- PHP整型 integer
- PHP浮点型 float
- php布尔型
- php数据类型之数组
- php数据类型之对象
- php数据类型之null
- php数据类型之间的转换
- php运算符
- php表达式
- PHP循环控制
- PHP流程控制
- php函数
- php全局变量
- PHP魔术变量
- php命名空间
- php 日期
- PHP包含文件
- php文件
- PHP 文件上传
- php Cookies
- php Sessions
- php email
- php安全email
- php错误处理
- PHP异常处理
- php过滤器
- PHP 高级过滤器
- php json
- php 表单
- PHP MySQL 简介
- PHP 连接 MySQL
- php创建数据库
- php 创建表
- php mysq 插入数据
- PHP MySQL 插入多条数据
- PHP MySQL 预处理语句
- php mysql 读取数据
- php mysql where
- PHP MySQL Order By
- PHP MySQL Update
- PHP MySQL Delete
- php ODBC