Next.js基于主机的根路径重写未触发问题求助
解决Next.js子域名重写根路径不生效的问题
你的重写规则在处理带路径的请求(比如sub.example.com/work)时能正常映射到/brand/work,但根路径sub.example.com/无法正确映射到/brand——原因是当:path*匹配空字符串时,目标路径会变成/brand/(带末尾斜杠),而Next.js的路由系统中,/brand/可能会被默认重定向或无法匹配到你实际的/brand页面路由,最终 fallback 到首页。
修正后的重写配置
在next.config.ts中添加一条专门匹配根路径的规则,和原有规则配合使用:
// next.config.ts — fixed version async rewrites() { return [ // 匹配子域名根路径,直接映射到/brand { source: "/", has: [{ type: "host", value: "sub.example.com" }], destination: "/brand", }, // 匹配子域名下的所有带路径请求,映射到/brand下对应路径 { source: "/:path*", has: [{ type: "host", value: "sub.example.com" }], destination: "/brand/:path*", }, ]; }
说明
- 第一条规则专门处理
sub.example.com/的请求,直接指向/brand,避免了末尾斜杠导致的路由匹配问题。 - 第二条规则继续处理所有带路径的请求(如
sub.example.com/work),保持原有映射逻辑。
重启Next.js开发服务器后,访问sub.example.com/会正确渲染example.com/brand页面,sub.example.com/work会渲染example.com/brand/work页面,且URL保持不变。
内容的提问来源于stack exchange,提问作者Etemire Ewoma
相关产品推荐
相关产品推荐

