有些站点为了省抓取预算,会在 robots.txt 里屏蔽 /js/、/css/ 或 /assets/ 目录。短期看日志里静态资源请求变少,但搜索引擎拿到的是一个不完整的页面。现代搜索引擎虽然能渲染 JavaScript,前提是能下载到渲染所需的资源。资源被拦,渲染就无从谈起,收录判断也会受影响。
搜索引擎渲染页面的基本流程
蜘蛛先抓取 HTML,然后解析其中引用的 CSS、JS、图片等资源。如果资源可抓取,渲染队列会执行脚本,生成最终 DOM,再提取正文、链接和结构化数据。这个过程和浏览器接近,只是异步、有延迟。资源被 robots.txt 拦住,渲染器只能拿到残缺的页面。
被拦住之后会发生什么
- 正文可能为空或只有模板文字,算法难以判断页面主题。
- 站内链接如果由 JS 注入,可能发现不了新 URL。
- 懒加载内容、评论区、价格库存等动态信息缺失。
- 页面质量信号不足,可能延迟进入索引,或进入后内容不完整。
注意,这里说的是“可能”,不是必然。搜索引擎有时会尝试其他方式获取资源,但依赖这种兜底并不稳妥。
常见的误拦与自查方法
先确认 robots.txt 里有没有不小心写宽的规则。比如 Disallow: / 后面跟了 Allow: /,或者屏蔽了 /*.js 这类通配。也要检查是否有 Disallow: /assets/ 把整站样式脚本一起挡住。
用几个地方交叉验证
- Search Console 的“网址检查”:看“已抓取的页面”截图里样式和内容是否正常。
- “抓取统计信息”:看 CSS、JS 的响应码,是否大量 403 或 404。
- 服务器日志:过滤 CSS、JS 请求,确认搜索引擎的 UA 是否能拿到 200。
- 移动设备适合性测试或富媒体测试:这些工具也会渲染页面,可作参考。
想省抓取预算,该怎么做
屏蔽资源通常省不下多少预算,反而让蜘蛛反复回来确认页面。更合理的做法是:
- 把关键 CSS、JS 设为可抓取,非关键资源再考虑合并或延迟加载。
- 重要内容优先服务端渲染或静态输出,减少对 JS 的依赖。
- 用 noindex 控制索引,而不是用 robots.txt 屏蔽整类资源。
- 对于确实不想被渲染的路径,单独评估,不要一刀切。
抓取和收录是两件事:抓不到资源,渲染和内容判断就缺依据;而索引状态最终还要看页面本身的质量与重复情况。
需要留意的几个细节
如果页面用 JS 插入 noindex,蜘蛛必须能执行脚本才会看到,否则可能照常收录。类似地,canonical 如果由 JS 写入,也可能被忽略。把这些指令放在服务端返回的 HTML 里更稳妥。
另外,屏蔽 JS 后,站内链接的发现路径会变窄。新页面可能长时间停留在“已发现未编入索引”。这时先别急着提交,检查一下链接是否真的出现在可抓取的 HTML 中。
最后,不同搜索引擎对渲染的支持程度和时机不一样。对收录有要求的站点,按最保守的方式设计:让核心内容不依赖 JS 也能看到,资源可抓取,指令写在服务端。