# TranslatePress 语言前缀重复:修复 /fr/fr/ 网址 > 在 TranslatePress 的网址中看到 /fr/fr/?找出多余的语言目录出现在哪里,修复源头,并了解 LingoWP 如何处理已有的语言前缀。 - URL: https://www.lingowp.com/zh/blog/translatepress-chongfu-yuyan-qianzhui/ - Author: Amine Sayagh - Category: 故障排查 - Published: 2026-10-06 - Language: zh 你的法语首页本应在 `/fr/` 打开,但语言链接却指向 `/fr/fr/`。或者,一个本应使用 `/fr/contact/` 的页面,在切换语言后变成了 `/fr/fr/contact/`。 **先找出第二个语言目录出现在哪里。点击前检查链接本身,点击后检查实际到达的地址,并检查该页面的 hreflang 条目。然后修正产生多余目录的设置或集成。** 手动输入的链接、重定向规则和自动生成的语言地址,各自需要不同的修复方式。在找到原因之前就修改语言别名或再加一条重定向,可能会让问题更难追踪。 下面介绍排查 TranslatePress 语言前缀重复问题的实用方法,以及 LingoWP 如何处理已经包含语言目录的网址。 *由 LingoWP 发布。外部文档核对于 2026 年 10 月 6 日。下文描述的 LingoWP 行为基于其 1.5 版的开发评测。网址示例仅用于说明症状,具体原因取决于网站配置。* ## 什么是语言前缀重复? 语言前缀是地址中用来标识语言版本的部分,例如法语的 `/fr/`。 如果这个目录被添加了两次,你可能会看到这样的地址: | 预期地址 | 需要排查的地址 | |---|---| | `https://example.com/fr/` | `https://example.com/fr/fr/` | | `https://example.com/fr/contact/` | `https://example.com/fr/fr/contact/` | 修改之前,先确认路径中每一段的含义。如果第二个 `fr` 本来就是某个页面的名称,那么 `/fr/fr/` 可能是合法地址。只有当两段都用来标识同一种语言时,才算前缀重复。 你为语言配置的网址别名也很重要。使用 `/fr-be/` 的网站应按该设置来检查,而不要假设所有法语地址都必须以 `/fr/` 开头。 ## 找出多余目录最先出现在哪里 打开一个受影响的页面,慢慢复现问题。记录起始地址、你选择的语言以及最终地址。 点击可见链接之前,先把鼠标悬停在上面,或使用**复制链接地址**查看它的目标。如果语言切换器经过一个重定向中转地址,也要记下该地址指定的目标,而不要假设它就是页面的最终网址。 如果 SEO 审计报告了重复前缀,再在页面源代码中查找 `hreflang`。 | 观察结果 | 优先排查的位置 | |---|---| | 链接本身已经包含 `/fr/fr/` | 生成该链接的菜单项、按钮、切换器或组件 | | 链接看起来正确,但点击后地址变成 `/fr/fr/` | 重定向规则或导航过程中触发的行为 | | 可见导航正常,但 hreflang 列出了 `/fr/fr/` | 生成语言标注的组件 | | 只有页眉中的自定义语言切换器出问题 | 该切换器的链接设置或集成 | | 问题是站点目录重复,例如 `/blog/blog/` | 站点基础路径配置和子目录路由 | 这些观察可以缩小排查范围,但仅凭它们无法证明是哪个插件造成的。 ## 如何在 TranslatePress 中修复重复的语言目录 ### 1. 确认语言网址设置 打开**设置 → TranslatePress → 常规**,检查每种语言配置的别名,并与网站上能正常访问的地址进行比较。 同时检查**为默认语言使用子目录**。这个选项会给默认语言的网址加上语言目录,它是正常功能,并不能证明存在前缀重复的缺陷。请让它与你想要的网址结构保持一致。[TranslatePress 在这里说明了这些设置](https://translatepress.com/docs/settings/)。 如果你最近修改过某个语言的别名,请找出仍在使用旧别名的链接和重定向规则。 不要仅仅因为出现了 `/fr/fr/` 就重命名法语别名。第二个目录可能来自配置的其他部分,而修改别名会影响该语言版本下的所有地址。 ### 2. 检查自定义链接和页眉控件 检查通向重复地址的具体菜单项、按钮或页眉元素。要看它保存的目标地址,而不仅仅是显示的名称。 如果保存的链接中直接写着 `/fr/fr/`,就把它改为已核实的目标地址。如果保存得没错,但在公开页面上多出了一个目录,就要排查这个链接是如何被处理的。 TranslatePress 的文档介绍了内部链接的自动本地化。它的**在自定义链接中强制使用语言**选项也会处理自定义的内部链接,例如在页面内容中手动输入的链接。请把这个设置与任何会添加语言目录的自定义代码或页面构建器行为一起检查。[参阅官方的链接翻译说明](https://translatepress.com/docs/translation-editor/translate-links/)。 要弄清的是:你的配置中是否有两个部分各自添加了语言段。不要假设开启自动链接处理就一定会产生重复前缀。 对于自定义语言切换器,请在测试页面上把它与 TranslatePress 的标准切换器进行比较。TranslatePress 提供 Language Switcher 区块和 `[language-switcher]` 短代码。如果标准控件正常而自定义控件出错,就把注意力放在自定义实现上。[其切换器文档介绍了可用选项](https://translatepress.com/docs/settings/language-switcher/)。 ### 3. 如果点击后网址才改变,检查重定向规则 如果链接指向正确地址,但导航过程中又多出一个 `/fr/`,就要检查涉及的重定向。 检查你的重定向插件、按语言自动跳转的设置,以及会修改路径的主机规则。如果在 WordPress 设置里看不到变化,请让开发者或主机服务商帮你查看重定向链。 一段有用的描述可以是: > 这个链接指向 /fr/contact/,但打开后跳转到了 /fr/fr/contact/。请帮忙检查是哪条重定向或哪个导航步骤加上了第二个 /fr/。 修正产生多余路径段的规则。避免添加一条删除所有重复目录的通用规则:有些重复的路径段可能是合法的页面名称,错误的替换可能影响无关内容。 ### 4. 区分站点目录和语言目录 如果访客是通过 `/blog/` 这样的目录访问你的网站,这个目录就是网站公开基础地址的一部分,而语言目录是路径中独立的一部分。 排查是否有自定义链接或重定向把站点基础目录添加到了已经包含它的地址上。以一个能正常访问的页面作为参照,而不要去猜测目录的正确顺序。 在 WordPress 的**设置 → 常规**中,区分 **WordPress 地址**和**站点地址**。前者表示 WordPress 文件的安装位置,后者表示网站的公开地址。当 WordPress 有独立目录时,两者不同是正常的。[WordPress 在这里解释了两者的区别](https://wordpress.org/documentation/article/settings-general-screen/)。 不要仅仅为了去掉重复路径就把这两个字段改成一样。请先和开发者或主机服务商确认实际的安装位置和公开路由。 ### 5. 如果只有 hreflang 出错,就排查这部分输出 语言切换器能正常工作,并不能证明页面的语言标注使用了同样正确的目标地址。 打开受影响的页面,选择**查看网页源代码**,搜索 `hreflang`。把列出的语言地址与已核实的可用网址进行比较。如果该地址发生重定向或无法打开,请参阅 [hreflang 指向重定向](/zh/blog/translatepress-hreflang-chongdingxiang/)或 [hreflang 指向 404 页面](/zh/blog/translatepress-hreflang-404/)时的处理方法。 如果重复前缀只出现在这里,就记录受影响的页面和条目,提供给技术支持。检查是哪个插件或自定义代码生成了这条标注,而不要去改已经正常的菜单链接。 hreflang 应当指明合适的语言对应页面,相关版本之间也应互相链接。[Google 关于本地化页面的指南解释了这种关系](https://developers.google.com/search/docs/specialty/international/localized-versions)。 ### 6. 刷新输出并重复最初的操作 修正原因后,清除相关的页面、主机或 CDN 缓存。以未登录访客的身份重新测试,并完整重复之前产生多余目录的导航操作。 如果问题仍然存在,请检查已安装的版本和相关的更新说明。TranslatePress 的更新日志中包含路由和子目录兼容性方面的修复,因此请把任何建议的修复与你实际使用的版本和配置对应起来。[查看当前更新日志](https://translatepress.com/docs/translatepress-free-changelog/)。 最终检查应包括: - 从原始语言切换到法语,再切换回来。 - 从法语首页导航到一个内页。 - 使用最初出错的页眉或移动端控件。 - 检查受影响页面的 hreflang 目标。 - 确认安装在子目录中的网站保留了其基础路径。 如果某个错误生成的地址已经被分享或使用,在修复源头之后,可以考虑设置一条精确的重定向,指向正确的替代地址。Google 建议对永久性的地址变更使用永久重定向。重定向可以保住已有链接,但生成的链接应直接使用修正后的目标地址。[阅读 Google 的重定向指南](https://developers.google.com/search/docs/crawling-indexing/301-redirects)。 ## LingoWP 如何避免重复添加语言前缀 在网站构建导航的过程中,一个语言网址可能要经过多个步骤。再次应用同一种语言时,地址应保持不变。 LingoWP 的开发评测描述了它在应用所选语言之前,会先识别地址中已经存在的已配置语言前缀。因此,一个已经本地化为法语的网址,在 LingoWP 再次处理时不会再被加上一个法语目录。 举一个页面别名不变的简单例子: | 起始网址 | 应用法语之后 | |---|---| | `/contact/` | `/fr/contact/` | | `/fr/contact/` | `/fr/contact/` | 对网站所有者来说,好处是导航可预测:语言地址可以反复使用,而不会累积语言目录。 **LingoWP 1.5** 的评测报告了针对重复语言转换的测试,以及在子目录安装中保留站点目录的测试。这些测试覆盖了本文描述的网址处理行为,其中包括针对早先一个重复目录问题的回归测试。 你在 LingoWP 的中央工作区中管理译文,而它的语言链接使用这种路由行为。如果反复修正网址已经成了你日常维护的一部分,这是比较插件时值得评估的具体功能。[LingoWP 与 TranslatePress 对比](/zh/blog/lingowp-yu-translatepress-duibi/)一文介绍了更全面的差异。 外部规则仍需检查。自定义脚本或主机重定向可能会在 LingoWP 生成网址之后再修改它。迁移之前,请在网站副本上测试实际的导航和集成。 **[了解 LingoWP](https://lingowp.com/)**,看看它的翻译工作流程,并评估它是否适合你的网站。 ## 常见问题 ### 我应该关闭“在自定义链接中强制使用语言”吗? 先确认问题是否与自定义链接处理有关。在测试网站上比较开启和关闭该设置时受影响的链接,并检查是否还有其他自定义也添加了语言目录。永久关闭它可能会改变其他内部链接保持所选语言的方式。 ### 清除缓存能去掉 /fr/fr/ 网址吗? 在底层链接或路由规则修正之后,它可以清除旧的输出。如果重复地址立刻又出现,说明仍有东西在生成它。请追查那个源头,而不是反复清除缓存。 ### /fr/fr/ 一定是无效网址吗? 不一定。第二段可能是合法的页面别名。请确认预期的页面和路由。对于本应位于 `/fr/` 的首页,多出一个语言目录就需要排查。