大猫OPC

按 Host 分派:一个入口,三种站点

阅读 9 更新于 2026-10-27

先说结论

多租户系统最容易乱的地方不是数据,是入口。同一个 IP、同一套代码,要判断"这次请求该出哪个站"。

城市站用 Host 分派,四层优先级:

① city_sites.domain        城市站独立域名(最精确)
② tenant_domains.domain    租户根域名 / 后台域名
③ tenants.root_domain 泛子域
     {slug}-{hash}.root  → 城市站
     admin.root          → 租户后台
     www.root / root     → 门户
④ {tenant}.platform        平台域名下的租户入口

为什么未命中要 404

一个未登记的子域,如果"回落"到门户或第一个站,会出现:

  • 搜索引擎把无数错拼域名都当成同一个页面
  • 客户绑错域名时,看到的是别人的站
  • 无法判断域名到底有没有生效

所以规则是:没登记就是 404,不猜、不回落。

域名唯一性

同一个 Host 只能属于一个租户或站点:

  • city_sites.domain 唯一索引
  • tenant_domains.domain 唯一索引
  • 保存时跨表校验 tenants.root_domain / admin_domain
  • 根域名与后台域名不能相同

三种链接模式

模式 例子 适用
subdomain kunming-xxx.jamsw.com 泛解析已配好,推荐
path /s/kunming-xxx/ 没有泛解析时的兜底
query /index.php?r=... 完全没有 rewrite 的环境

线上实际用的是 subdomain:门户 https,城市站 http(泛域名不配证书)。这里有个坑:80 端口不能强制跳 https,否则泛域名会 307 到没有证书的地址,全站打不开。

本页内容对你有帮助吗? 感谢反馈(演示按钮,暂未接入后端)