先把当时的情况摆出来。编辑用预览链接给客户看稿,地址是 /?p=123&preview=true,这些链接被贴进聊天工具和邮件,三个月后 site 查询出现 800 条带 preview 参数的结果,正文还是草稿。

原因不止一个,得分开看。预览链接不需要登录就能访问,拿到的人都能打开。也可能是页面没有输出 noindex,预览参数也没被 robots 挡。

不容易想到的是,草稿内容被收录后与正式文章形成重复。还有一种情况,预览 token 长期有效,链接在外部反复传播。

上来先确认预览页是否带 noindex

curl -sI 'https://www.example.com/?p=123&preview=true' | grep -i x-robots

随后对预览参数统一加 noindex

add_filter('wp_robots', function($r){ if (isset($_GET['preview'])) $r['noindex']=true; return $r; });

然后检查预览 token 的有效期

grep -rn 'preview_nonce' wp-includes/

剩下的就是清理已收录的预览页

site:www.example.com/?preview=true

恢复的判定其实很直接。预览页响应头带 noindex,新生成的预览链接过期后返回 403,已收录条目两周内清空。

容易忽略的是,预览链接本质是带权限的内容,最稳的做法是强制登录再看,光靠 noindex 挡不住已经流出去的地址。这类问题最好一次改到位,反复小改反而容易把原因搅混。

作者 9823189