Creation:2025-08-23Last update:2025-08-23
将此文档参考到您的 AI 助手ChatGPTClaudeDeepSeekGoogle AI modeGeminiPerplexityMistralGrok
使用您最喜欢的AI助手总结文档,并引用此页面和AI提供商
此页面的内容已使用 AI 翻译。
查看英文原文的最新版本编辑此文档
如果您有改善此文档的想法,请随时通过在GitHub上提交拉取请求来贡献。
文档的 GitHub 链接Copy
复制文档 Markdown 到剪贴板
useRewriteURL Hook
针对 Next.js 的 useRewriteURL Hook 是一个客户端 Hook,可自动管理本地化的 URL 重写。它可确保浏览器地址栏始终反映在你的 intlayer.config.ts 中定义的“pretty”本地化路径,即使用户手动输入带有 locale 前缀的规范路径。
该 Hook 通过使用 window.history.replaceState 静默工作,避免了重复的 Next.js 路由导航或页面刷新。
使用
只需在属于布局的客户端组件中调用该 hook。
工作原理
- 路径监控:该 hook 监听用户的
locale变更。 - 重写检测:它会将当前的
window.location.pathname与配置中的重写规则进行比对。 - URL 校正:如果为当前路径找到更“漂亮”的本地化别名,hook 会调用
window.history.replaceState更新地址栏,同时保持用户停留在相同的内部页面。
为什么在 Next.js 中使用它?
当 intlayerMiddleware 处理服务器端重写和初始重定向时,useRewriteURL 钩子确保在客户端跳转之后浏览器地址栏仍与您偏好的 SEO 结构保持一致。
- 简洁的 URL:强制使用本地化段,例如
/fr/essais而不是/fr/tests。 - 性能:在不触发完整路由周期或重新获取数据的情况下更新地址栏。
- SEO 对齐:通过确保用户和搜索引擎机器人只看到一个 URL 版本,防止重复内容问题。