迅睿用查询参数定位一次请求:s(应用)、c(控制器)、m(方法)。伪静态与自定义路由最终都会解析成这三项(及其它 GET 参数),再交给 Frame\Run 实例化控制器。
| 参数 | 含义 | 默认 / 约定 |
|---|---|---|
s | 应用目录名 | 可空;空表示走系统核心。特殊值 api 表示 API。会员中心为 member |
c | 控制器类名 | 默认 home(实际类名为 Home) |
m | 方法名 | 默认 index |
典型动态地址:
后台入口文件已定义 IS_ADMIN,一般仍通过 c / m(及可选 s)指定后台控制器。当前页 URI 可由类库取得,例如 \Phpcmf\Service::L('router')->uri(),格式多为 {app}/{c}/{m}。
Web 服务器把友好 URL 转到 public/index.php(服务器伪静态,见《伪静态配置》)。
引导阶段读取当前 URI(CMSURI),匹配 config/rewrite.php 或路由缓存,写入 $_GET(含 s/c/m)。
可选加载 config/router.php,按 URI 强制改写 $_GET。
根据域名映射、首页锁定等再次调整 s/c/m。
Frame\Run::bootWeb() 按场景命名空间实例化控制器并调用方法。
文件:config/rewrite.php(或运行目录下同名文件)。键为正则(匹配 CMSURI),值为映射到的入口查询串:
$1、$2…对应正则捕获组,写入对应 GET 参数。
未写 c/m 时,系统会补默认 home/index。
匹配结果可缓存到 cache/route/,规则变更后建议后台更新缓存。
自定义 URL 必须配置解析规则,否则无法打开页面。
服务器侧「把请求转给 index.php」与「rewrite.php 解析参数」是两步,缺一不可。部署代码生成方式见《伪静态配置》。
文件:config/router.php。在伪静态解析之后执行,可按当前 URI(变量 $uu 等)直接改写 $_GET。示例:
适合个别固定路径的强制路由,复杂批量规则仍优先写在 rewrite.php。
若存在 cache/index.lock,且当前为站点首页、非后台、非 API、未指定 s,系统可读出其中 应用/控制器/方法,强制作为首页入口。用于把首页直接交给某个应用控制器。
| 需求 | 做法 |
|---|---|
| 动态调试地址 | 直接拼 ?s=&c=&m= |
| 短链接 / SEO 地址 | 服务器伪静态 + rewrite.php |
| 个别 URI 强制跳转某控制器 | router.php |
| 域名进指定应用 | 后台配置 → domain_app.php |
| 指定应用作为首页 | index.lock 或域名/路由配合 |
s 对应应用目录须真实存在;会员、建站等还依赖是否已安装(install.lock)。
保留名如 api、admin、member、module 有特殊含义,自定义应用勿随意占用。
改路由后若异常,先确认服务器重写生效,再检查 rewrite.php 语法,并更新缓存。