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

如何在Clerk.js中将Next.js动态路由设为公开?

解决Next.js authMiddleware动态路由设为公开的错误

问题原因

你在publicRoutes里使用了Next.js的动态路由语法/product/[category],但authMiddleware并不识别这种方括号写法——它会把这个路径当作字面量,只会匹配/product/[category]这个实际存在的页面,而不是所有/product/xxx的动态路由,这就是导致错误的核心原因。

解决方案

你需要改用通配符或正则表达式来匹配动态路由:

方案1:通配符匹配所有/product子路由

这是最简洁的方式,适合需要开放所有/product下的动态页面的场景:

export default authMiddleware({
  publicRoutes: ['/', '/account', '/contact', '/order', '/product/*']
});

方案2:正则表达式精确匹配

如果需要更严格的匹配(比如只允许一级动态参数,不匹配/product/xxx/yyy这类嵌套路由),可以用正则表达式:

export default authMiddleware({
  publicRoutes: ['/', '/account', '/contact', '/order', /^\/product\/.+$/]
});

补充说明

  • 通配符*会匹配该路径下的所有子路径,包括嵌套路由(比如/product/shoes/nike)
  • 正则表达式可以自定义匹配规则,满足更复杂的路由开放需求

内容的提问来源于stack exchange,提问作者Rabindra Mahato

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 22:08:12