iris中绑定子域名需区分静态与通配符注册方式,本地开发必须配置hosts文件;静态子域用subdomain("admin"),通配符用wildcardsubdomain()或party("*."),且动态分组须后于静态注册。

要在Iris框架中正确绑定子域名并让请求精准路由到对应处理逻辑,必须区分静态子域与通配符子域的注册方式,且本地开发时hosts文件配置缺一不可,否则浏览器根本无法解析到127.0.0.1。
注册静态子域名(如 admin.mydomain.com)
第一步:调用 app.Subdomain("admin") 获取一个专用于该子域的路由分组 Party。
第二步:在该 Party 上注册路由,例如 admin.Get("/", handler),此时实际匹配路径是 admin.mydomain.com/,而非 mydomain.com/admin/。
第三步:启动服务时监听根域名端口,例如 app.Run(iris.Addr("mydomain.com:80"))——注意这里写的是 mydomain.com,不是 admin.mydomain.com,Iris 会自动按 Host 头匹配已注册的子域分组。
注册通配符子域名(如 user1.mydomain.com、user2.mydomain.com)
方法一:使用 WildcardSubdomain 方法直接创建动态分组:
anyUser := app.WildcardSubdomain() → 然后在其上注册路由,如 anyUser.Get("/profile", profileHandler),所有未命中静态子域的请求(如 alice.mydomain.com/profile)都会进入此分组。
方法二:用 Party 语法等效实现:any := app.Party("*.") → 效果完全一致,但更直观;注意 Party("*.") 中的星号必须带英文点号,写成 "*" 或 "*." 都不生效。
本地开发必须做的 hosts 配置
打开 C:\Windows\System32\Drivers\etc\hosts(Windows)或 /etc/hosts(macOS/Linux)。
追加两行:
127.0.0.1 mydomain.com
127.0.0.1 admin.mydomain.com
如果测试通配符,再加一行:127.0.0.1 alice.mydomain.com——每新增一个要测的子域,都必须手动加一条记录,DNS 不会自动泛解析本地回环地址。
避免常见错误的路由嵌套写法
① 不要嵌套调用 Subdomain 多次来拼接子域层级,例如 app.Subdomain("admin").Subdomain("panel") 会生成 panel.admin. 前缀,最终匹配的是 panel.admin.mydomain.com,而不是你预期的 admin.mydomain.com/panel。
② 若需同时支持 admin.mydomain.com 和 api.mydomain.com,应分别创建两个独立 Party:admin := app.Subdomain("admin") 和 api := app.Subdomain("api"),各自注册自己的路由。
③ 动态子域分组 必须放在静态子域之后注册,否则它会提前捕获所有请求,导致 admin、api 等静态子域永远无法命中。











