Skip to content

2026-06-09 增加默认文档支持 + 路由流程重构

路由流程重构:按扩展名分流

原问题:静态文件判断在路由之前,导致目录重定向和默认文档会跳过用户注册的路由(如 /some/dir 被重定向到 /some/dir/,路由永远匹配不到)。

解决方案:按路径最后一段是否含点号分流

请求 /css/style.css → "style.css" 含点号 → 静态文件快速通道(跳过路由)
请求 /api/users     → "users"    无点号 → 路由优先通道
请求 /some/dir      → "dir"      无点号 → 路由优先通道
请求 /              → ""         无点号 → 路由优先通道

路由优先通道流程:

  1. 前置中间件
  2. 匹配用户路由(Dictionary O(1))
  3. 自动路由(CallByName)
  4. 静态文件兜底(目录重定向 + 默认文档)
  5. 404

快速通道流程:

  1. IsStaticFile 判断 → 直接 Response.File
  2. 不在索引中也尝试直接发送(深层子目录文件)
  3. 无 WebRoot 则回退走路由

默认文档功能

  1. 默认文档查找:请求目录路径时按顺序查找 index.htmlindex.htmdefault.htmldefault.htm
  2. 目录重定向:无尾部斜杠的目录请求 302 到带 / 的路径
  3. 根路径 / 支持IsStaticFile("/") 返回 True
  4. 自定义默认文档HttpSvr.AddDefaultDocument("home.html")
  5. 目录无默认文档返回 403
  6. Response.Redirect(Url) 方法:新增 302 重定向

修改文件

文件修改内容
cHttpServerSvr.cls新增 m_DefaultDocumentsAddDefaultDocumentGetDefaultDocumentsIsStaticFile 支持 /
cHttpServerResponse.clsFile 方法增加目录判断+默认文档查找、新增 Redirect 方法
cHttpServerRouter.cls按扩展名分流重构整个路由流程

VB6及其LOGO版权为微软公司所有