Next.js 16 中的 hreflang:三个悄然导致你的翻译页面从谷歌索引中消失的错误

发布日期:2026-06-21 10:03:55   浏览量 :2
发布日期:2026-06-21 10:03:55  
2

太长不看版 — 如果你以多种语言发布相同的页面,hreflang 标签的作用是告诉谷歌“这些页面互为翻译版本,而非重复内容”。有三种错误会导致谷歌忽略(甚至主动惩罚)你的配置:非互惠的语言集群、hreflang 指向返回 404 错误 的网址,以及 canonical(规范链接)指向英语主页面而非页面本身。这些错误都不会抛出异常,也不会导致构建失败。你只有通过检查渲染后的 <head> 部分才能发现它们。以下是能避免所有这三种错误的 Next.js 16 元数据应用程序接口模式。

多语言搜索引擎优化有一个残酷的特性:其失败模式表现为静默。你的翻译页面渲染正常,构建状态显示成功,TypeScript 也没有报错——而谷歌却悄悄地将你的法语页面判定为英语页面的重复内容并将其从索引中移除。任何地方都没有错误提示。这篇文章就是我希望能早点拥有的检查清单。

全文将使用虚构的 example.com 作为示例。该模式对框架的依赖极轻:无需国际化库,仅使用 Next.js 16 元数据应用程序接口的 alternates 字段和一个小型辅助函数。

结构:一个辅助函数,每页设置区域语言

元数据应用程序接口中的 alternates.languages 会为你渲染 <link rel="alternate" hreflang="..."> 标签。一个微小的辅助函数可保持一致性:

// lib/hreflang.ts
type Locale = "en" | "fr" | "es" | "de" | "nl" | "ar";

/**
 * availableLocales:仅包含实际存在翻译页面的区域语言。
 * selfLocale:确保规范链接指向自身(页面指向自己,
 *             而非指向英语主页面)。
 */
export function buildHreflang(
  path: string,
  availableLocales: readonly Locale[],
  selfLocale: Locale = "en",
  baseUrl = "https://example.com",
) {
  const suffix = path === "/" ? "" : path;
  const languages: Record<

免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。

关于我们
热门推荐
合作伙伴
免责声明:本站部分资讯来源于网络,如有侵权请及时联系客服,我们将尽快处理
Copyright © 2025-2027 ToB产业网址导航 公安备案 浙公网安备33010602013138号 浙ICP备16025413号-9
支持 反馈 订阅 数据