在项目的配置目录下,创建route.php
一个空的route配置文件:
return array(
'route' => array(
)
);
所有配置都在
'route' => array(
)
中编写。
一个完整的路由配置示例:
return array(
'route' => array(
// 默认不指定文件时使用的文件名。可不设置。
'default_file' => 'index.php',
// 是否隐藏默认文件名,不设置时默认为false
'hide_default_file' => true,
// 定义所有入口文件的权限,可不设置
'entrance' => array(
'index.php' => array(
// 使用允许规则
'priority' => 'allow',
// 允许访问Public模块下所有控制器所有动作
'allow' => array('Public*'),
),
'admin.php' => array(
// 使用拒绝规则
'priority' => 'deny',
// 无效
'allow' => array('Public*','Public/Index/index'),
// 默认缺省的模块/控制器/动作,*号代表所有
'default_mca' => 'Admin/Index/*'
)
),
// 路由规则
'rules' => array(
// URL => 模块/控制器/动作名
'a.php@/b/[b:word:3]' => 'Home/Index/$1',
'a/[alias:word]' => '>/Home/Index/$1',
'b/[b:word:1:2][c:word:3]' => 'Home/Index/$1$2',
'login' => 'Admin/User/login',
'c/[id:d+]' => 'Home/Index/test'
)
)
);
URL格式:
[文件名@]地址
可以在地址中定义各种变量,还可以用类型长度来限定。
格式:
[变量名[:类型[:长度最小值[:长度最大值]]]]
可选类型:
| 名称 | 支持长度 | 描述 |
| -- | -- | -- |
| int | √ | 整数 |
| double | | 小数 |
| letter | √ | 大小写字母 |
| big_letter | √ | 大写字母 |
| small_letter | √ | 小写字母 |
| word | √ | 包含大小写英文字母、0-9数字、_- |
| 留空 | √ | 所有字符 |
| 正则表达式 | √ | 原样代入 |
下面主要讲解的是rules中的路由规则。
'a.php@/b/[b:word:3]' => 'Home/Index/$1'
生效的URL:
http://localhost/a.php/b/abc
对应模块控制器动作:
Home/Index/abc
如果在对应动作方法中定义参数$b,则会把abc传入$b参数中。
* * * * *
'a/[alias:word]' => '>/Home/Index/$1'
生效的URL:
http://localhost/a/a123
对应模块控制器动作:
Home/Index/a123
如果在对应动作方法中定义参数$alias,则会把a123传入$alias参数中。
* * * * *
'b/[b:word:1:2][c:word:3]' => 'Home/Index/$1$2'
生效的URL:
http://localhost/a/test
http://localhost/a/login
对应模块控制器动作:
Home/Index/a123
不生效的URL:
http://localhost/a/hehehe
http://localhost/a/log
如果在对应动作方法中定义参数$b或$c,则会把对应值传入参数中。
* * * * *
'login' => 'Admin/User/login'
生效的URL:
http://localhost/login
对应模块控制器动作:
Admin/User/login
起到了伪静态的作用,当然你也可以定义为
'login.html' => 'Admin/User/login'
这时访问
http://localhost/login.html
同样对应模块控制器动作:
Admin/User/login
* * * * *
'c/[id:d+]' => 'Home/Index/test'
生效的URL:
http://localhost/c/123
对应模块控制器动作:
Home/Index/test
如果在对应动作方法中定义参数$id,则会把123传入$id参数中。



