路由定义
路由表位于实例cfg目录下(如:/www/cfg/router.php),在开启路由的情况下,解析URL和生成URL均优先检索此表。一条完整的路由规则如下:
[
'url' => 'news/{name}/{id}.html',
'act' => 'news.content.show',
'method' => 'get',
'scheme' => 'http',
'param' => [
'id' => '(\d+)'
]
]
url
必须,待匹配的URL规则,和请求URL中的路径部分进行匹配
开头和结尾的 / 可以省略,不影响匹配结果
act
必须,模块.控制器.动作(节点式),发生匹配后,则路由到这里
method
可选,请求方式(如post),限定该规则只对该方式有效
请求方式不区分大小写
scheme
可选,请求协议(如https),限定该规则只对该协议有效
param
可选,限定url中参数值的匹配规则,使用正则表达式。如本例中,{name}参数未设置匹配规则,则默认使用配置中param_val定义的规则(匹配非常宽松),{id}参数设置了规则 (\d+) ,表示只匹配数字。
- http://boasoft.top/news/a0/c8.html {id}不匹配,限定为数字
- http://boasoft.top/news/b1/1.html 匹配,得到一组环境数据:
[ 'mod' => 'news', 'con' => 'content', 'act' => 'show', 'var' => [ 'name' => 'b1' 'id' => 1 ] ]
程序会执行 'news.content.show' 动作,在该动作中可以用 $this->name 和 $this->id 来访问参数
开发中遇到路由表修改后不生效的问题,请先尝试删除临时目录下的缓存(var/www/cache/)