先看现象。站点正文免费,模板为了标记会员内容,给所有 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; }
末了清
缓
改之前先确认了最近有没有人动过配置,避免白查一遍。
这次没动代码,只在配置和运行环境上找原因。
恢复的判定其实很直接。去掉全站标记后重新抓取,富媒体资格在三周内恢复,免费文章的展示不再被拦。
这个字段不写默认就是免费,写错反而把整站推进付费内容池。这类问题最好一次改到位,反复小改反而容易把原因搅混。
