预发布站 staging.example.com 没有登录保护,用 site: 查出来 800 多条,正式站的文章在结果里被 staging 版本顶掉。第一次遇到会往复杂处想,其实漏掉的多是个小前提。
server_name staging.example.com; auth_basic "staging"; auth_basic_user_file /etc/nginx/.htpasswd; add_header X-Robots-Tag "noindex, nofollow" always;
预发布环境复制了生产内容,又没有 robots 或密码保护。子域被外链带到,抓取后与正式站完全重复,引擎只会挑一个留下。这一点先确认清楚,后面就不用反复试。
「测试环境被收录」这类改动最怕改一半,回滚脚本先准备好,再动生产。新版本先放一台机器上跑一天再全量,问题一般在这段时间暴露。
备份不是备了就行,恢复一次才算数,很多备份文件打开才发现是空的。接口问题先分清是没发出去、发出去了没收到,还是收到了处理失败。
具体做法是,先给整个预发布站加访问认证,挡住所有 UA;补上 noindex 响应头,覆盖全部路径;在搜索后台提交移除请求,按目录批量处理;上线流程里加一步检查 staging 是否可公开访问。
改完照着核一遍,未登录访问 staging 直接弹认证框,site: 查询的结果逐条消失。
