在折腾博客的过程中,我们经常会将同一个博客部署到多个平台(比如主站用 EdgeOne,备用站用 Vercel、Cloudflare 或 Netlify)。这样做虽然增强了高可用性,但如果配置不当,会给 SEO 带来严重的挑战。

本文将分享如何通过合理配置 baseURL、环境变量以及修改主题,来实现“多端部署,权重归一”的完美 SEO 方案。

核心挑战:重复内容与权重分散

搜索引擎(谷歌、必应等)非常讨厌“重复内容”。如果你在多个域名下部署了完全一样的博客:

  1. 权重分裂:搜索引擎会认为这是几个不同的站点,导致你的搜索排名被分散。
  2. 收录混乱:搜索引擎可能会收录你的备用站点(如 xxx.vercel.app),而不是你的主域名。

方案一:固定 baseURL(推荐)

这是目前最稳妥的 SEO 方案。

1. 修改 hugo.yaml

baseURL 固定为你的主域名

1
baseURL: https://ihcll.cn/

2. 为什么不再推荐分平台修改 HUGO_BASEURL

过去有些教程建议在每个平台上设置对应的 HUGO_BASEURL 环境变量,但这会导致生成的 canonical(权威链接)指向备用域名。 固定 baseURL 的好处:无论用户从哪个镜像站访问,HTML 源码里的 canonical 始终指向 ihcll.cn。这告诉搜索引擎:“这些镜像站只是我的化身,请把权重都给主站。”

方案二:环境变量的妙用

虽然 baseURL 建议全局固定,但某些第三方验证码爬虫规则则建议按需配置。

1. 必应 (Bing) 站点验证

通常你只需要在主站验证。如果你在 hugo.yaml 里硬编码了 SiteVerificationTag,它会出现在所有镜像站。 推荐做法

  • hugo.yaml 中将该项留空。
  • 仅在 EdgeOne (主站) 的部署面板中,添加环境变量: HUGO_PARAMS_ANALYTICS_BING_SITEVERIFICATIONTAG = "你的验证码"

2. 禁止备用站点被收录

你不希望 Vercel 的二级域名被搜到? 推荐做法

  • 在备用平台(Vercel/Cloudflare)添加环境变量: HUGO_PARAMS_ROBOTSNOINDEX = true
  • 同时确保你的主题 head.html 支持该参数:
    1
    2
    3
    4
    5
    
    {{- if and (not (site.Param "robotsNoIndex")) (or hugo.IsProduction (eq site.Params.env "production")) }}
      <meta name="robots" content="index, follow">
    {{- else }}
      <meta name="robots" content="noindex, nofollow">
    {{- end }}
    

方案三:主题链接相对化

为了防止在 Vercel 预览站上点击菜单时突然跳回主站,我们需要将主题中的内部链接改为相对路径

修改建议:

  • 将导航菜单中的 absLangURL 改为 relLangURL
  • 将文章链接从 .Permalink 改为 .RelPermalink
  • 将 Favicon 等资源链接从 absURL 改为 relURL

这样做的好处

  • 用户体验:不管在哪个域名下访问,点击链接都会留在当前域名。
  • SEO 依旧完美:因为 head.html 里的 canonical 依然是绝对路径指向主站。

总结

配置项 单站点建议 多站点 (SEO 优化型)
baseURL 设置为主域名 固定为主域名,不随平台变动
enableRobotsTXT true true (主站允许,备用站环境变量禁止)
Bing 验证 直接写在 hugo.yaml 仅在主站设置环境变量
主题链接 绝对或相对均可 强烈建议使用相对路径

通过以上配置,你的博客将具备极强的容灾能力,同时在搜索排名上保持绝对的权威性。