Headless 站商品页 canonical 全指向首页怎么修
现象#
Search Console 显示大量商品页的 canonical 指向站点首页,view-source 里 link rel=canonical 一律是 https://shop.com/;同一套商品数据在 Liquid 主题站却正常。
原因#
- 框架只会合并路由的 meta 导出,子路由没写 meta 就继承父级的默认值
- canonical 用 new URL(request.url).origin 拼接,丢掉了 pathname
- 多语言路由的 locale 段没参与拼接,所有语言版本指向同一个 URL
- 分页参数 page=2 被原样写进 canonical,与第一页互相判重
处理步骤#
- 每个路由导出
meta,用new URL(request.url)取完整 pathname - 基准域名固定取
env.PUBLIC_STORE_DOMAIN,不要用请求 Host,避免预览域泄漏 - 多语言把
params.locale拼进路径,同时输出对应的 hreflang - 分页页 canonical 统一指向自身或第一页,全站只能选一种规则
- 预览环境加
noindex,防止 oxygen.shop 子域被收录
验收标准#
curl -s https://shop.com/products/x | grep canonical 返回该商品自身 URL,Search Console 的 canonical 报告不再指向首页。
本文由 风格技术 技术团队整理,适用于 Shopify 标准版与 Plus 店铺。Shopify 平台能力迭代较快,具体操作路径与字段以官方文档和店铺后台实际版本为准。