<<<<<<< .mine =======
当前位置: 首页 > SEO > thinkphp路由

thinkphp路由

时间:2014-02-10 19:41:23
今天来谈谈thinkphp中路由的一些功能和作用

ThinkPHP支持URL路由功能,要启用路由功能,需要设置ROUTER_ON 参数为true。开启路由功能后,系统会自动进行路由检测,如果在路由定义里面找到和当前URL匹配的路由名称,就会进行路由解析和重定向。路由功能需要定义路由定义文件,位于项目的配置目录下面,文件名为routes.php,定义格式:

PHP代码

Return Array(

// 第一种方式 常规路由

'RouteName'=>array('模块名称','操作名称','参数定义','额外参数'),

// 第二种方式 泛路由

‘RouteName@’=>array(

array('路由匹配正则','模块名称','操作名称','参数定义','额外参数'),

),

)

系统在执行Dispatch解析的时候,会判断当前URL是否存在定义的路由名称,如果有就会按照定义的路由规则来进行URL解析。例如,我们启用了路由功能,并且定义了下面的
一个路由规则:

PHP代码

'blog'=>array('Blog','index','year,month,day','userId=1&status=1')

泛路由支持

新版引入了泛路由支持,提供了对同一个路由名称的多个规则的支持,使得URL的设置更加灵活,例如,我们对Blog路由名称需要有多个规则的路由:

PHP代码

'Blog@'=>array(

array('/^\/(\d+)(\/p\/\d)?$/','Blog','read','id'),

array('/^\/(\d+)\/(\d+)/','Blog','archive','year,month'),

),

第一个路由规则表示解析 Blog/123 这样的URL到Blog模块的read操作

第二个路由规则表示解析 Blog/2007/08 这样的URL到Blog模块的archive操作

泛路由的定义难度就在路由正则的定义上面,其它参数和常规路由的使用一致。

举个简单路由的例子,如果我们有一个City模块,而我们希望能够通过类似下面这样的URL地址来访问具体某个城市的操作:

http://serverName/index.php/City/shanghai/

shanghai这个操作方法是不存在的,我们给相关的城市操作定义了一个city方法,如下:

PHP代码

Class CityAction extends Action{

public function city(){

// 读取城市名称

$cityName = $_GET['name'];

echo ('当前城市:'.$cityName);

}
}

接下来我们来定义路由文件,实现类似于

http://serverName/index.php/City/shanghai/

这样的解析,路由文件名称是

PHP代码

Return array(

'City'=>array('City','city','name');

);

这样,URL里面所有的City模块都会被路由到City模块的city操作,而后面的第二个参数会被解析成 $_GET[‘name’]

接下来,我们就可以在浏览器里面输入

http://serverName/index.php/City/beijing/

http://serverName/index.php/City/shanghai/

http://serverName/index.php/City/shenzhen/

会看到依次输出的结果是:

当前城市:beijing

当前城市:shanghai

当前城市:shenzhen

相关文章

为什么中国的网站设计如此的糟糕?(上篇)

我先写一个免责申明。我在本文中的观点仅仅是个人的观点意见。观点形成基于我在中国中部的河南省居住的短短两年期间对中国文化的...

你怎么看SEO乙方从业者?

问:爆老师,我身边几个SEO同事都是接二连三的离职,随后感觉这个工作都做不长啊,你怎么看啊? 答:首先,离职不代表...

SEO技术知识点之市场及竞争研究“四大点”

做SEO的都需要知道,在接到一个项目时,我们少不了去分析市场以及竞争对手的情况。如果没有充足的准备和合理的分析,甚至对对...

让搜索引擎更快速收录页面 我们需要注意的几点

相信有很多人在优化过程中都经历过这种情况,新站上线后,百度除了收录首页之外,内页却迟迟不见收录,甚至有的几个月都没有收录...

Seo:我们需要具备的基础知识

  Seo是一门技术活,很好的完成一个项目必须是以良好的技术来做支撑的,所以想要做好一个项目就必须具备良好的seo技术,...
沪ICP备10034044号-12
400-685-0732
400-685-0732 在线咨询