You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Next.js 13动态路由自动追加查询参数问题求助

Next.js 13 Pages目录动态路由自动追加查询参数并重定向的问题

我用Next.js 13的Pages目录开发项目,部署在Vercel上,配置了[category]/[slug].tsx和popular/[slug].tsx两个动态路由页面,并且都设置了getStaticPaths和getStaticProps。但现在遇到异常:

  • 访问/someCategoryName/someSlugName时,会自动重定向到/someCategoryName/someSlugName?category=someCategoryName&slug=someSlugName
  • 访问/popular/someSlugName时,会重定向到/popular/someSlugName?slug=someSlugName

代码里没配置这类重定向,也没通过useRouter做跳转,中间件只有域名对应页面目录的重写逻辑,和查询参数追加无关。以下是可能的排查方向:

  • 检查Vercel的部署配置
    Vercel默认的尾随斜杠处理或自动重定向规则可能导致这个问题。去Vercel项目设置里查看Redirects和Trailing Slash选项,确认有没有开启自动添加尾随斜杠,或者存在未注意到的隐含重定向规则。

  • 排查getStaticPaths的fallback设置
    如果getStaticPaths里的fallback设为true或blocking,当访问未预生成的路径时,服务端生成页面的过程可能出现参数传递异常。如果已预生成的路径也有这个问题,那大概率不是这个原因,但还是可以检查fallback值和生成的路径列表是否正确。

  • 清理路由缓存与检查路由冲突
    可能是旧的路由配置缓存导致的,比如之前有过基于查询参数的路由逻辑,部署后Vercel缓存没清。可以在Vercel重新部署时勾选“清除缓存”,本地开发则删除.next目录后重新构建。另外,检查项目里是否有其他页面文件(比如popular.tsx、[category].tsx)和动态路由产生匹配冲突,导致Next.js错误地把动态参数转为查询参数。

  • 复查中间件的重写逻辑
    虽然你说中间件只有域名重写,但可能重写规则的正则或路径处理有漏洞,比如不小心把原始路由参数追加到了查询串里。仔细检查NextResponse.rewrite的调用代码,确认路径处理没有额外添加参数。

  • 尝试升级/降级Next.js版本
    Next.js 13的Pages目录部分版本存在动态路由解析的已知bug,尤其是和getStaticProps/getStaticPaths结合使用时。可以尝试升级到最新稳定版,或者降级到13.4.x这类公认稳定的版本,看问题是否消失。

内容的提问来源于stack exchange,提问作者ira bolyukh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 16:32:13