ARTICLE DETAIL

资讯详情

深耕商务建站与企业官网运营的一线实战洞察。

sitemap_lastmod陷阱

sitemap_lastmod陷阱 内容更新了但爬虫就是不抓检查一下 sitemap 的 lastmod一个真实的排查案例网站上线两个月百度收录为零。更诡异的是——明明内容一直在更新爬虫日志显示 Bytespider 和 Baiduspider 都来过但就是只抓首页子页面一个都不碰。排查到最后问题出在一个几乎没人注意的字段上sitemap.xml 里的lastmod。现象爬虫来了但只抓首页先从服务器日志看爬虫行为nginx access log# Baiduspider 访问记录 [21/Jul/2026:14:36] GET / HTTP/1.1 200 [27/Jul/2026:11:19] GET / HTTP/1.1 200 [28/Jul/2026:11:57] GET / HTTP/1.1 200 [29/Jul/2026:13:54] GET / HTTP/1.1 200 [01/Aug/2026:04:05] GET / HTTP/1.1 200 [01/Aug/2026:04:05] GET /xiaohongshu_v2.jpg HTTP/1.1 200 # Baiduspider-render 渲染时抓图片 # Bytespider 访问记录 [02/Aug/2026:22:03] GET /sitemap.xml HTTP/1.1 200 [02/Aug/2026:22:13] GET /robots.txt HTTP/1.1 200规律很明显Baiduspider 反复抓首页GET /偶尔带 render 爬虫深度渲染但从不深入子页Bytespider 只抓 sitemap.xml 和 robots.txt抓完就走了子页面/methodology.html、/products.html 等一个都没被访问过按经验这种抓首页但不深入通常有三个嫌疑robots.txt 误拦、页面内链失效、或者——sitemap 的新鲜度信号过期了。排查先排除常规嫌疑1. robots.txt 检查User-agent: * Allow: / Sitemap: https://www.example.com/sitemap.xml全放行没问题。2. 页面可达性检查curl -s -o /dev/null -w %{http_code} https://www.example.com/methodology.html # 200子页面本身没问题3. 爬虫 UA 内容一致性# 浏览器 UA 和爬虫 UA 拿到的字节数对比 curl -sL -A Mozilla/5.0 https://www.example.com/ | wc -c # 105414 curl -sL -A Bytespider https://www.example.com/ | wc -c # 105414 curl -sL -A Baiduspider https://www.example.com/ | wc -c # 105414三个一样CDN 没有对爬虫截断内容。根因sitemap 的 lastmod 过期了最后回到 sitemap.xml 本身。一看就明白了urlsetxmlnshttp://www.sitemaps.org/schemas/sitemap/0.9urllochttps://www.example.com//loclastmod2026-07-21/lastmod!-- ← 问题在这 --/urlurllochttps://www.example.com/methodology.html/loclastmod2026-07-21/lastmod/url.../urlset8 个页面的 lastmod 全部停在 7 月 21 日但网页文件的实际修改时间是 8 月 3 日。也就是说内容更新了但 sitemap 还在对爬虫说这个站 7 月 21 号之后没变过。而爬虫尤其 Bytespider的工作机制是先访问 sitemap.xml比较lastmod和它缓存里的上次抓取时间只有 lastmod 比上次更新才去抓对应的内容页lastmod 没变 → 认为内容没更新 → 跳过所以日志里的现象就完全解释通了8 月 2 日 22:03 Bytespider 来抓 sitemap.xml看到 lastmod 还是 7 月 21 日觉得没有新内容掉头就走了。你更新的那些 HTML 页面它根本没机会看到。修复更新 lastmod 并验证把 sitemap.xml 里所有lastmod改成最新日期和实际内容更新时间一致# 修改前先备份cp/var/www/html/sitemap.xml /var/www/html/sitemap.xml.bak# 更新 lastmod8 个页面全改成 2026-08-03# 建议用脚本逐个替换不要手写避免格式错误改完验证三个层面1. 服务器文件层面grep-clastmod2026-08-03/lastmod/var/www/html/sitemap.xml# 8全部更新成功2. 线上访问层面curl-shttps://www.example.com/sitemap.xml|greplastmod# 8 个 2026-08-033. CDN 缓存层面curl-sIhttps://www.example.com/sitemap.xml|grep-icf-cache-status# 如果是 DYNAMIC说明 CDN 不缓存这个文件爬虫每次都能拿到最新版无需清缓存# 如果是 HIT需要在 CDN 面板 Purge 一下否则爬虫拿到的还是旧文件这一步很关键如果你的 sitemap 在 CDN 里被缓存了cf-cache-status: HIT光改服务器文件没用爬虫拿到的是 CDN 里的旧副本必须 Purge。如果显示 DYNAMIC说明每次回源改完立即生效。复盘为什么这个坑容易踩阶段你以为的状态爬虫看到的状态更新 HTML内容更新了页面变了如果它来抓的话不更新 sitemap没关系反正有 sitemaplastmod 还是旧的 → 判断无新内容 → 不抓更新 sitemap lastmod通知爬虫有新内容触发对内容页的重新抓取根因是sitemap 的 lastmod 是爬虫判断是否值得抓取的核心信号它必须和实际内容更新时间同步。内容改了lastmod 不跟着改等于把更新藏起来了。排查清单可直接复用遇到内容更新了但收录没动静按这个顺序查# 1. 爬虫到底来没来、抓了什么# 服务器日志里分别统计两个爬虫的访问路径grep-ibaiduspider /var/log/nginx/access.log|awk{print $7}|sort|uniq-cgrep-ibytespider /var/log/nginx/access.log|awk{print $7}|sort|uniq-c# 如果只有 / 和 /sitemap.xml没有内容页 → 大概率是 lastmod 问题# 2. sitemap lastmod 是否和内容更新时间一致curl-shttps://www.example.com/sitemap.xml|greplastmod# 3. 服务器上 HTML 文件的真实修改时间ls-la/var/www/html/*.html|head# 对比 lastmod如果 HTML 比 lastmod 新 → 问题确认# 4. 改完验证 CDN 缓存状态curl-sIhttps://www.example.com/sitemap.xml|grep-icf-cache-status经验总结lastmod 必须和内容同步更新——每次改完页面顺手更新 sitemap 里对应条目的 lastmod30 秒的事CDN 缓存是隐藏坑——改完一定要查 cf-cache-statusHIT 就 Purge爬虫日志是最好的诊断工具——抓了什么路径比来了多少次信息量大得多只看次数很容易被爬虫来过误导更新 sitemap 后可以主动提交——搜索引擎站长平台的手动提交/资源提交功能配合新 lastmod能加速爬虫的重新抓取收录慢的时候与其怀疑内容质量不如先确认爬虫有没有真正看到你的更新。一个过期的 lastmod能让所有内容更新都白做。作者达哥专注 GEO 技术研究和 AI 落地实践。延伸阅读 官网https://www.matrixengine.site/ 百度百科https://baike.baidu.com/item/矩阵引擎重庆智能科技有限公司✍️ 知乎https://www.zhihu.com/people/da-ge-ai-zhuan-xing CSDNhttps://blog.csdn.net/matrix_E 百家号搜索「达哥AI转型」
返回列表
PREV
查看更多资讯
NEXT
返回资讯列表