Bug report
Description
使用 目录式内容(foo/README.md → 路由 /foo/,产物 foo/index.html)时,客户端访问无后缀 clean URL(如 /foo)会 404,部署在会自动规范化 URL 的静态托管(如 Vercel)时还会形成无限重定向循环。
客户端 resolveRoutePath 流程(packages/client/src/router/resolveRoutePath.ts):
/foo → normalizeRoutePath → /foo.html(inferRoutePath 有意把无后缀补 .html)
→ routes 里没有 /foo.html(实际路由是目录式 /foo/)
→ redirects 里也没有 /foo.html
→ 返回 /foo.html → resolveRoute 判定 404 ❌
路由表里只有目录路由 /foo/,但客户端把 clean URL 转成了不存在的 .html,且没有回退到目录路由。
复现
- 配置
foo/README.md(目录页)
- 浏览器访问
/foo(无后缀,即 clean URL)
- 观察:客户端导航到不存在的
/foo.html → 404
- 部署在 Vercel 等静态托管时:托管层把
/foo.html 301 回目录 → 浏览器再把目录去斜杠 → 无限重定向循环(ERR_TOO_MANY_REDIRECTS)
访问 /foo/(带斜杠)正常。问题仅在 clean URL 形态(无后缀)下触发。
Expected behavior
访问 /foo(无后缀)应正确解析到目录路由 /foo/,而不是转成不存在的 /foo.html。
环境
- vuepress 2.0.0-rc.31(
vuepress@next)
- 部署:Vercel / 任意会做 URL 规范化的静态托管
相关
Bug report
Description
使用 目录式内容(
foo/README.md→ 路由/foo/,产物foo/index.html)时,客户端访问无后缀 clean URL(如/foo)会 404,部署在会自动规范化 URL 的静态托管(如 Vercel)时还会形成无限重定向循环。客户端
resolveRoutePath流程(packages/client/src/router/resolveRoutePath.ts):路由表里只有目录路由
/foo/,但客户端把 clean URL 转成了不存在的.html,且没有回退到目录路由。复现
foo/README.md(目录页)/foo(无后缀,即 clean URL)/foo.html→ 404/foo.html301 回目录 → 浏览器再把目录去斜杠 → 无限重定向循环(ERR_TOO_MANY_REDIRECTS)Expected behavior
访问
/foo(无后缀)应正确解析到目录路由/foo/,而不是转成不存在的/foo.html。环境
vuepress@next)相关