发布:更新:阅读:1358
内容人员发布一篇文章后,后台总数从 436 变成 437,公网 sitemap 仍然只有 445 条。另一种情况更隐蔽:XML 总数没有变化,新 URL 已经加入,却有一条旧文章地址同时消失。只看“发布前后差一条”无法判断发布是否完整,必须把数据库应生成的地址和公网 XML 逐条比较。
排查前保存服务器时间、内容最大 ID、活动文章数和旧 sitemap 文件。网站首页、栏目页等固定地址也会占用条目,文章总数本来就不一定等于 sitemap 总数。可比的对象应是同一生成规则下的新旧 URL 集合。
PbootCMS 的文章地址由栏目 filename 和文章 filename 组成。检查人员先读取内容 ID、scode、status、date、filename,再用 scode 找到栏目路径。文章启用、栏目可见且发布时间不晚于服务器当前时间,才进入本轮预期集合。电脑本地时间不能代替服务器时间,否则午夜附近的定时发布容易被误判。
预期清单至少保留内容 ID、栏目路径、文章文件名、正式 URL、发布日期和更新时间。一个内容 ID 应对应一条正式地址。同栏目出现重复 filename 时,不能用“后写覆盖前写”维持表面正常;检查人员要停下生成任务,确认哪条记录应改名,并给已经公开的旧地址安排跳转。
把新 sitemap 与发布前备份分别解析成 URL 集合,再计算新增项、缺失项和重复项。新增一条、缺失一条时,总数完全不变,但站点已经丢失旧入口。缺失地址要回到内容状态、栏目状态和生成范围核对,不能因为它仍能通过浏览器打开就忽略。
XML 中出现预览地址、查询参数或无 www 域名,通常说明生成程序使用了错误的 URL 来源。正式地址应从实时栏目与文章字段推导。新增项的协议、主机名和路径还要与页面 canonical 一致,具体取样方法可参考sitemap 新增 URL 与 canonical 验收。
新文章没有进入预期集合,先检查 status、发布时间和所属栏目。发布时间晚于服务器当前时间时,页面可能尚未公开;栏目停用或模型不在 sitemap 生成范围内,也会让记录被排除。此时不要直接向 XML 追加一行,先确认业务上是否确实要公开这篇内容。
文章已经符合条件,生成结果仍缺失,再查数据库读取范围、事务提交与缓存。发布程序若在事务提交前重建 sitemap,读到的仍是旧数据;服务器文件已经更新而公网数量未变,可能是页面缓存或 CDN 仍返回旧版本。对比文件修改时间只能辅助定位,最终要重新请求公网 sitemap,并记录响应时间和内容摘要。
目标 URL 应直接返回 200,不经过临时跳转。页面 title、H1、description 与 canonical 要指向同一篇内容,所属栏目列表也能找到这条地址。sitemap 通过 XML 解析、URL 唯一性和目标出现次数检查后,再按栏目抽查旧地址,避免本轮生成影响其他内容。
发布记录保留数据库与 sitemap 备份、预期集合摘要、实际差集、目标状态码和检查时间。当天完成目标页与集合差异核对,次日还需检查移动端和跳转终点,可结合文章上线后的两轮复核记录。数量再次异常时,检查人员可以从上一份差集继续追踪,不必重新猜测是哪条记录发生变化。