Iris唯一原生跳转方式是ctx.Redirect(),发出301/302响应由浏览器自动跳转;SPA场景应使用通配路由返回index.html而非重定向,且需排除/api/路径;子域跳转需配合hosts绑定与Subdomain Party注册。

Iris 没有“前端式路由跳转”功能,所有跳转都靠 HTTP 重定向或客户端发起新请求;服务端能做的只有 ctx.Redirect() 或返回前端可接管的 HTML。
ctx.Redirect() 是唯一原生跳转方式
它发出 301/302 响应,浏览器收到后自动跳转到新 URL。这是 Iris 唯一内置的跳转机制,不依赖前端 JS。
- 必须传入完整路径或绝对 URL:
ctx.Redirect("/login", iris.StatusFound)或ctx.Redirect("https://example.com", iris.StatusMovedPermanently) - 状态码选错会导致 SEO 问题:临时跳转用
iris.StatusFound(302),永久跳转用iris.StatusMovedPermanently(301) - 不能在中间件里只调
ctx.StatusCode(302)就完事——必须配ctx.Redirect(),否则响应体为空,浏览器不跳 - 如果跳转目标是带参数的路由(如
/user/{id}),得手动拼接:ctx.Redirect("/user/" + userID, iris.StatusFound),Iris 不提供类似urlFor()的反向生成函数
SPA 场景下别误用 Redirect,该用通配路由返回 index.html
用户刷新 /dashboard/settings 时,若后端没匹配路由就直接 Redirect,会破坏 SPA 体验。此时不该跳转,而应返回 index.html 让前端路由接管。
开箱即用的技能链路由引擎。13 条预定义链覆盖搜索、开发、审查、MLOps、法律、创意等场景,三层路由架构(触发词→SAD反馈→DAG编排),recall@10=96.97%。配置驱动(chains.yaml),零代码扩展。pip install skill-weave-chains 一键安装。
- 通配路由必须放在所有显式路由之后:
app.Handle("GET", "/{path:path}", func(ctx iris.Context) { ctx.ServeFile("./dist/index.html") }) - 务必排除 API 路径,否则
/api/users也会被塞进index.html:if strings.HasPrefix(ctx.Request().URL.Path, "/api/") { ctx.StatusCode(404); return } - 不要在 handler 里写
ctx.Redirect("/")来“兜底”,这会让所有 404 都跳首页,掩盖真实错误
子域名跳转需配合系统 hosts 和 Subdomain Party
想让 /admin 路由跳去 admin.example.com,不能只靠 ctx.Redirect(),因为那是客户端行为,和子域配置无关;真正要跳,得先确保子域能被访问到。
- 本地测试必须改
/etc/hosts:127.0.0.1 admin.example.com,否则ctx.Redirect("https://admin.example.com")会失败 - 子域路由本身要用
app.Subdomain("admin")显式注册,否则请求根本不会进 Iris:admin := app.Subdomain("admin"); admin.Get("/", homeHandler) - 如果想从主站自动跳去子域(如访问
/go-to-admin就跳https://admin.example.com),ctx.Redirect("https://admin.example.com")可以用,但要注意 HTTPS 证书和跨域 Cookie 设置
最容易被忽略的是:Iris 的跳转永远发生在服务端响应阶段,它不控制前端 history.pushState 或 router.push。如果你在 Vue/React 里看到“路由跳转”,那和 Iris 完全无关——那是前端框架干的活。Iris 只管好自己那层 HTTP 响应,别试图让它模拟前端路由行为。


















