Iris框架通过Rewrite中间件实现URL路径重写:1. 调用app.UseRouter和app.WrapRouter注册规则映射;2. 支持{path:path}通配符和正则模式(需手动解码);3. 可结合Party子路由实现条件化重写。

在Iris框架中通过Rewrite中间件将用户访问的旧URL路径自动映射到新处理逻辑,避免前端链接失效或SEO降权,同时不改变浏览器地址栏显示。
启用Rewrite中间件并注册基础重写规则
在应用初始化阶段调用app.UseRouter加载Rewrite中间件,确保它在路由匹配前生效。
调用app.WrapRouter包裹原生路由器,再用iris.Rewrite传入规则映射表,格式为旧路径: 新路径。
例如将/v1/users重写为/api/v2/users,需写成"/v1/users": "/api/v2/users",注意键名必须带开头斜杠。
配置多级路径重写与正则捕获
方法一:使用字符串通配符
在重写规则键中用{path:path}捕获任意深度子路径,值中用{path}引用,如"/old/{path:path}": "/new/{path}"可将/old/a/b/c转为/new/a/b/c。
方法二:启用正则重写模式
调用iris.NewRewrite创建实例,传入iris.RewriteOptions{Regexp: true},随后用rewriter.Add添加形如^/product/([0-9]+)$→/items/$1的规则,$1代表第一个捕获组。
【正则模式下原始URL路径不会被自动解码,若含中文或特殊字符需自行url.PathUnescape】
结合路由组实现条件化重写
第一步:定义一个子路由器adminRouter := app.Party("/admin")。
第二步:在该子路由器上单独挂载Rewrite中间件adminRouter.Use(iris.Rewrite(map[string]string{"/dashboard": "/stats"}))。
第三步:为子路由器注册真实处理器adminRouter.Get("/stats", func(ctx iris.Context) { ctx.WriteString("ok") })。
这样只有以/admin开头的请求才会触发该重写规则,不影响根路径或其他分组。


















