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 见效不快,索引更新有自己的节奏。观察周期按周算比按小时算更靠谱,期間重点看渲染是否完整、日誌是否恢复,而不是盯着收錄數字的即时變化。