先看现象。站点正文免费,模板为了标记会员内容,给所有 Article 都输出了不可免费访问的标记。Google 把全站文章当成付费墙内容,富媒体和时效性展示资格全没了。

原因不止一个,得分开看。模板布尔值写死,没有按内容类型判断。还有一种是会员字段默认值是 0,被直接映射成 false。

另外,部分文章有会员区,整页被当成付费。

少数情况下是测试工具不报错,只影响展示资格。

先看页面输出的值

curl -s https://www.example.com/post/1 | grep -o 'isAccessibleForFree[^,}]*'

数一下有多少文章被标成付费

SELECT COUNT(*) FROM posts WHERE is_paid = 0;

只在真有付费区时才输出该标记

if ($has_paywall) { $schema['isAccessibleForFree'] = false; }

末了清

缓

改之前先确认了最近有没有人动过配置,避免白查一遍。

这次没动代码,只在配置和运行环境上找原因。

恢复的判定其实很直接。去掉全站标记后重新抓取,富媒体资格在三周内恢复,免费文章的展示不再被拦。

这个字段不写默认就是免费,写错反而把整站推进付费内容池。这类问题最好一次改到位,反复小改反而容易把原因搅混。

作者 9823189