Next.js 14 App Router韩文URL配置及解码URL使用方法求助
Next.js 韩文URL路由配置及重定向循环问题解决
Next.js完全支持韩文等非ASCII字符的URL路由,浏览器会自动将韩文路径转义为百分编码(比如你日志里的%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0就是“시작하기”的转义结果),这是浏览器的标准行为,无需额外处理编码转换。
关于你遇到的ERR_TOO_MANY_REDIRECTS错误,本质是middleware里的重定向逻辑导致了无限循环,常见原因和修复方案如下:
错误根源:如果你在middleware中写了强制将转义后的URL重定向回韩文原URL的逻辑,浏览器会再次自动转义韩文路径,触发middleware的重定向规则,形成循环。比如这类错误代码:
// 错误示例:引发无限循环 export function middleware(request) { const decodedPath = decodeURI(request.nextUrl.pathname); if (decodedPath !== request.nextUrl.pathname) { return NextResponse.redirect(new URL(decodedPath, request.url)); } }正确处理方式:
- 无需手动处理编码转换,直接创建对应名称的路由文件即可。比如在
app/docs/시작하기/page.js(App Router)或pages/docs/시작하기.js(Pages Router)创建路由文件,访问http://localhost:3000/docs/시작하기就能正常匹配路由。 - 如果确实需要用middleware处理路由(比如语言路由逻辑),需添加条件避免循环:
export function middleware(request) { const { pathname } = request.nextUrl; // 跳过已解码的路径,避免重复重定向 if (pathname === decodeURI(pathname)) { return NextResponse.next(); } // 其他业务逻辑... }
- 无需手动处理编码转换,直接创建对应名称的路由文件即可。比如在
总结:Next.js原生支持韩文URL路由,直接创建对应路由文件即可;ERR_TOO_MANY_REDIRECTS是middleware重定向逻辑导致的循环,去掉不必要的编码转换重定向就能解决。
内容的提问来源于stack exchange,提问作者JY K
相关产品推荐
相关产品推荐

