首页 > PHP资讯 > PHP培训技术 > ThinkPHP2.0URL路由(2.0版本适用)

ThinkPHP2.0URL路由(2.0版本适用)

PHP培训技术
本部分内容适用于 ThinkPHP V2.0版本,如果您需要了解其他版本的路由,请参考:

ThinkPHP 3.0 路由
ThinkPHP
2.1 路由

URL 路由简介

简单的说,URL 路由就是允许你定制你需要的 URL 样子,这样做会美化 URL
,提高用户体验,也有益于搜索引擎的收录。

例子:

原本的 URL
为:http://www.phplo.com/index.php/Products/Show/Category/5/Products_id/123/status/1

经过
URL 路由改写后 URL
可以为:

http://www.phplo.com/index.php/product/5/123

当然,使用 Apache 的
URL Rewrite 规则也能达到 URL 定制的功能,在此就不展开了,请参看 Apache Rewrite 相关的文章。
ThinkPHP URL
路由配置

在 ThinkPHP 中要使用 URL 路由功能,需要做如下配置:

在项目配置文件 config.php
里面开启路由功能(设置为 true):

'URL_ROUTER_ON' => true,

在项目配置目录 Conf
下创建路路由定义文件,文件名为 routes.php ,注意使用 UTF-8 编码。
路由规则定义

路由规则定义于 routes.php
文件内,格式为数组格式,具体定义规则又分为常规路由和泛路由,语法如下:




  1. return array(
  2. // 常规路由
  3. '路由名称'=>array('模块名称', '操作名称', '参数定义', '额外参数'),

  4. // 泛路由
  5. '路由名称@'=>array(
  6. array('路由匹配正则', '模块名称', '操作名称', '参数定义', '额外参数'),
  7. ),
  8. ...更多的路由名称定义
  9. )

路由规则参数中,参数定义和额外参数是可选项,可以根据实际情况选择性使用。

如果在配置文件里定义了路由开启功能,系统在执行
Dispatch 解析的时候,会判断当前 URL 是否存在定义的路由名称,如果有就会按照定义的路由规则来进行 URL 解析。
ThinkPHP URL
路由实例

以本文开始的例子为例,看该路由是如何定义的:

return array(
//
常规路由
'product'=>array('Products', 'show', 'category,product_id',
'status=1'),
)

这样当访问 index.php/product/5/123 时,实际访问的是
index.php/Products/show/category/5/product_id/123/status/1。
补充说明

ThinkPHP
2.0 版本不支持路由名称大写,即 product 可以,Product
路由失效。
不要将路由名称配置与模块名称相同。
参数定义的内容应该是动态的参数,URL
地址需要按顺序传入实际的参数值。
额外参数的内容应该是固定的参数值,由 ThinkPHP 在解析路由的时候,自动隐含传入而无需在 URL
中体现出来,且参数格式要普通格式,如:status=1&type=1。

解析到分组

如果启用了项目分组,而需要将路由解析至某个分组模块如
Admin 分组:

'product'=>array('Admin.Products', 'show',
'category,product_id',
'status=1'),

由于默认分组可以省略,因此如果解析至默认分组的话,可以不用加默认分组名称。
URL 兼容模式

如果
URL 使用了兼容模式,则上述 URL
地址应该为:index.php/?r=product&category=5&products_id=123。

以上是
ThinkPHP URL 路由配置说明及常规路由的用法实例,通过 URL 路由可以制造出更加友好和符合 SEO 的 URL
,要了解更加强大的泛路由,参见本节另一部分内容:ThinkPHP 泛路由 。

参考阅读

ThinkPHP
URL访问模式
ThinkPHP 项目配置

PHP培训技术

本文由欣才IT学院整理发布,未经许可,禁止转载。
支持42不支持0