robots.txt 最常见的写法是先来一条 Disallow: /,后来为了“别让搜索引擎抓那些没用的目录”,规则一条条加上去,很容易顺手把 /assets/、/static/、/js/、/css/ 这类静态资源目录也挡掉。表面看只是少抓几十个文件,实际影响往往落在另一个地方:页面还能不能被正确读懂。
抓取、渲染、收录是三件事
先把链路拆开看,很多困惑会自己消掉:
- 抓取:搜索引擎请求某个 URL 并拿到响应。robots.txt 的 Disallow 挡的是这一步。
- 渲染:拿到 HTML 后按需下载 CSS、JS、图片等子资源,把页面执行成一个可视结果。子资源同样受 robots.txt 约束。
- 收录:在读懂内容之后,判断这个 URL 是否值得放进索引。它和前面两步有关,但不是必然结果。
所以“CSS/JS 被挡”并不等于“页面一定不收录”,它改变的是搜索引擎能拿到多少信息、据此做判断的把握有多大。
屏蔽之后常见的几种表现
- 正文靠前端框架渲染时,脚本下不来,抓到的就是一个空壳;服务端直出 HTML 的页面受影响小得多。
- 懒加载图片、异步插入的内容拿不到,页面被判为“内容偏少”的概率上升。
- 布局信息缺失,移动端适配、首屏内容这类判断失去依据。
- 日志里这些静态资源的抓取记录消失,出问题时少了一条排查线索。
这些都不是必然结果,但如果站点恰好依赖 JS 渲染或图片信息,命中的概率就不低。
自查顺序
- 打开 robots.txt,逐条看是否存在目录级 Disallow 覆盖了静态资源路径。
- 取一个典型页面,对比抓取到的原始 HTML 与渲染后的 HTML,差别在哪。
- 看渲染结果里少了什么:正文、图片、导航,还是结构化数据。
- 对照服务器日志,确认这些资源最近是否还有搜索引擎的请求进来。
- 估算改动收益:如果页面本来就是服务端直出,改与不改差别有限,不必为此大动干戈。
怎么调整
- 只放行必要的静态资源目录,而不是整站放开。robots.txt 不支持“允许某目录下的所有文件类型”这类写法,通常用 Allow 精确到目录即可。
- 确认这些资源本身不承担“必须登录才可见”的功能,避免放开后顺带暴露内部接口路径。
- 改完重新抓取一次代表性页面,对比修改前后的渲染结果。
- 同时检查有没有 noindex、X-Robots-Tag 之类的规则叠加,别把原因判错。
robots.txt 只影响抓取,不控制收录;反过来,放行静态资源也不代表页面就会被收录,内容与搜索需求的匹配度仍然是更靠前的变量。
最后提醒一句:改 robots.txt 见效不快,索引更新有自己的节奏。观察周期按周算比按小时算更靠谱,期间重点看渲染是否完整、日志是否恢复,而不是盯着收录数字的即时变化。