Skip to content

[Bug report] clean URLs (无后缀访问目录页) 在客户端被转成不存在的 .html,导致 404 / 无限重定向循环 #1719

Description

@MEMZ-CHROER

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 规范化的静态托管

相关

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions