Skip to content

fix(rank): 热门文档榜链接补 locale 前缀,修 /content/ 死链#362

Merged
longsizhuo merged 1 commit into
mainfrom
fix/hot-docs-locale-href
Jun 28, 2026
Merged

fix(rank): 热门文档榜链接补 locale 前缀,修 /content/ 死链#362
longsizhuo merged 1 commit into
mainfrom
fix/hot-docs-locale-href

Conversation

@longsizhuo

Copy link
Copy Markdown
Member

问题

/en/rank?tab=hot 热门文档榜(及首页"本周最热")的链接点进去 404,URL 形如 /en/content/docs/learn/ai

根因

HotDocsTab / HotDocsPreview 直接 <Link href={doc.path}> 渲染后端返回的 path。后端 top-docs 的 canonical 本应是无 locale 的 /docs/...,需前端补当前 locale 前缀;而后端旧 bug 还会泄漏 content/ 前缀,叠加成 /en/content/docs/... 死链。

修复

  • 新增 lib/top-doc-href.tstopDocHref(locale, path) 拼当前 locale 前缀,并防御性剥掉可能残留的 content/ 前缀和多余前导斜杠(后端若回退旧格式也不会再拼出 404)。
  • HotDocsTabHotDocsPreview 改用 useLocale() + topDocHref

后端归一化的根因修复在 involutionhell-backend#40(已部署)。本 PR 让链接直达 /en|zh/docs/...,省掉一次 next-intl 中间件重定向跳转。

验证

  • tsc --noEmit 无类型错误。
  • 后端修复部署后,37 条 top-docs path × 2 locale 全部 200;本 PR 让前端直接产出 /{locale}/docs/...

🤖 Generated with Claude Code

后端 top-docs 返回的 path 是无 locale 的 canonical(/docs/...)。HotDocsTab /
HotDocsPreview 之前直接 <Link href={doc.path}>,配合后端旧 bug 渲染出
/en/content/docs/... 死链。

新增 lib/top-doc-href.ts:拼当前 locale 前缀 + 防御性剥掉残留 content/ 前缀,
两个组件共用。即使后端某次回退到旧格式也不会再拼出 404。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@vercel

vercel Bot commented Jun 28, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
involutionhell-github-io Ready Ready Preview, Comment Jun 28, 2026 6:40pm
website-preview Ready Ready Preview, Comment Jun 28, 2026 6:40pm

@longsizhuo longsizhuo merged commit edbb4c2 into main Jun 28, 2026
7 checks passed
@longsizhuo longsizhuo deleted the fix/hot-docs-locale-href branch June 28, 2026 18:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant