1.概述
UT框架采用单入口方式,整体设计上符合MVC/MVVM,因此要明确路由上必要参数的含义。
显式路由
?m=x&p=x...,其中m为模块,p为模块所属页面名称,2个参数后紧跟其他GET参数。如:/?m=x&p=x&id=1
目录式路由
/m/p/...,目录式是静态路由的表现方式,依赖伪静态配置,m和p分别代表模块和页面名称。如:/m/p?id=1(可视开发包暂不支持目录式路由)
缺省设置:当m为空时自动默认为ut-frame(伪静态自动映射模块时可用index表示ut-frame),当p为空时默认为index
?m=x&p=x...,其中m为模块,p为模块所属页面名称,2个参数后紧跟其他GET参数。如:/?m=x&p=x&id=1
目录式路由
/m/p/...,目录式是静态路由的表现方式,依赖伪静态配置,m和p分别代表模块和页面名称。如:/m/p?id=1(可视开发包暂不支持目录式路由)
缺省设置:当m为空时自动默认为ut-frame(伪静态自动映射模块时可用index表示ut-frame),当p为空时默认为index
2.路由映射
| 类型 | 配置文件 | 规则格式 | 条件 | 映射效果 |
|---|---|---|---|---|
| 模块映射 | /open/route.php |
映射名称 => 真实模块名称 |
仅配置伪静态规则时生效 |
将 index 映射到 ut-frame 模块后:https://xxx.com/index/index → https://xxx.com/ut-frame/index(即 https://xxx.com?m=ut-frame&p=index)
|
| 页面映射 | /modules/模块/route.php |
页面别名 => 真实页面名称 |
配置即生效 |
将 test 映射到 index 页面后:显式路由: https://xxx.com/?m=模块&p=test → https://xxx.com/?m=模块&p=index目录式路由: https://xxx.com/模块/test → https://xxx.com/模块/index
|
3.路由编制
| 语法 | 写法 | 说明 |
|---|---|---|
| 动态语法 | usualtool\Lib\Route::Link("模块","页面","参数") |
在 PHP(控制器、模板编译代码)中调用,返回符合 UT 框架规则的地址字符串。 |
| 模板语法 | <{url=>Link("模块","页面","参数")}> |
在 .cms 模板中直接输出地址,等价于上面的动态调用。 |
| 参数留空 | Link("article","","cid=1&page=2") |
模块为空取 DEFAULT_MOD,页面为空取 DEFAULT_PAGE(默认 index),页面名会自动去掉 .php 后缀。 |
同一调用,两种输出(Link("article","","cid=1&page=2"))
| 配置 | 路由形态 | 生成地址 |
|---|---|---|
REWRITE=0 | 显式路由 | /?m=article&cid=1&page=2 |
REWRITE=1 | 目录式路由 | /article/index?cid=1&page=2 |
关键前提:目录式路由完全依赖伪静态设置。没有配置伪静态时,
REWRITE=1 编制出的 /article/index 这类地址是无效的——必须先确认服务器伪静态规则已生效,再开启目录式路由。
4.伪静态
各类服务器伪静态例子(注意:可视开发包暂不支持目录式伪静态)
Apache下.htaccess参考:
NGINX下配置参考:
IIS下web.config参考: