报错是这么冒出来的。商品三个颜色变体共用一个 sku,页面里三个 Product 实体的 sku 完全相同。Google 把三个变体合并成一个,另外两个颜色的价格和库存全都不显示。

中间走过弯路,把「offers 里的 url 都写成主商品地址」当成主因,改完现象没变。

把日志和配置对完,能解释这个现象的基本就这几处。变体没区分 sku,主表和子表用了同一个值。少数情况下是三个变体页面 URL 不同但 canonical 互指。

还有一种情况,商品系统导出时把 sku 字段截断。

第一件事是看页面里的 sku 与 offers

curl -s https://www.example.com/p/red | grep -o '"sku":"[^"]*"'

接着检查三个变体的 canonical

for c in red blue black; do curl -s https://www.example.com/p/$c | grep -i canonical; done

给每个变体写独立 sku

UPDATE sku SET code = CONCAT(parent_code, '-', color) WHERE parent_id = 1024;

等前面都确认过,再重

新

怎么算真的好了,看的是同一批现象。三个变体各自拿到独立 sku 和自引用后,报告里分成三组,另外两个颜色的价格重新出现在搜索结果里。

补一句。变体页各自独立的前提是 sku、URL、canonical 三者都不重复,缺一个就会被合并。报错文案容易误导,真正的原因往往在相邻那一层的日志里。

作者 9823189