大部分收录话题都在讨论 HTML 页面,但搜索引擎索引里存在的那一串链接,有相当一部分指向图片、PDF、Word 或 Excel 附件,甚至字体和脚本文件。这些资源平时不被关注,等到索引量莫名变大,或者搜索结果里出现不该出现的下载文件时,才会被发现。处理这类问题,思路和普通页面不太一样。
先盘一遍:哪些非 HTML 资源可能进了索引
不要凭印象判断,先拉一份清单。常用的几种方式:
- 用 site: 查询配合 filetype,看站点下有多少 PDF、文档类文件被收录;
- 在搜索控制台里查看图片、视频相关报告,单独看媒体资源的曝光与索引情况;
- 翻服务器日志,看蜘蛛是否在抓取 /uploads/、/files/、/assets/ 这类目录下的文件;
- 检查附件下载入口,看是否同时存在“介绍页”和“文件直链”两种可访问地址。
盘完之后通常能分成几类:图片、可下载文档、纯资源文件(CSS、JS、字体),以及少数本身就该被索引的模板文件。分类不同,处理方式也不同。
该留还是该收:先看用户搜到它有没有意义
判断标准可以简单一点:这个文件出现在搜索结果里,对搜索的人是否构成一个可用的答案。
- 值得保留:产品手册、白皮书、公开数据表、原创图片。用户直接搜到并使用它,是正常需求。
- 建议收口:后台导出的临时文件、重复上传的同一份文档、带内部编号的占位图片、未发布内容的预览文件。
- 看情况:商品图、活动海报。只在自己站点内使用、没有独立搜索价值的,通常不必单独占索引名额。
要注意的是,图片资源参与图片搜索,和参与网页搜索的索引是两套不同的展示入口。只因为不想让它出现在网页结果里,就整站禁止图片抓取,往往会连带失去图片搜索的流量。动手前分清楚目标。
收口工具:响应头和 robots.txt 不能互换
X-Robots-Tag 响应头
PDF、图片这类文件没法在文件内部写 meta 标签,能用的就是 HTTP 响应头。服务器返回文件时加上 X-Robots-Tag: noindex,可以让搜索引擎在抓取到之后不把它编入索引。这个方法的前提是文件本身能被正常抓取。
robots.txt 的 Disallow
Disallow 是阻止抓取,不是阻止索引。一旦某个目录被禁止抓取,搜索引擎就读不到该目录下的 noindex 头,已经被收录的文件可能继续以只有 URL 的形式留在索引里。所以常见顺序是:先允许抓取并输出 noindex,等这些文件从索引中退出之后,再考虑用 robots.txt 长期屏蔽,减少无谓抓取。
两者混用的典型错误:先加了 Disallow,发现索引没掉,又把 noindex 加上去,但因为抓取被挡住,noindex 一直读不到。
附件介绍页和文件本身,二选一
如果每个文件都有一个 HTML 介绍页,让介绍页承接索引和排名,把文件直链设为不索引,是比较干净的做法。反过来,如果文件本身就是用户要的内容,那就别让介绍页只写一句“点击下载”,否则两个地址会互相稀释。
已经进了索引的,按这个顺序退
- 确认文件的准确 URL,包括带参数或大小写不同的变体;
- 确认抓取没有被规则挡住,能正常返回 200;
- 对需要移除的文件输出 noindex 响应头;
- 资源被替换时,用 301 把旧文件指向新文件,而不是直接删掉留 404;
- 等索引数据刷新之后,再判断是否需要用 robots.txt 减少抓取。
回到那个老问题:抓取不等于收录
日志里看到蜘蛛反复下载某个 PDF,只说明它被抓了,不说明它会被保留在索引里;反过来,索引里存在一个链接,也不代表搜索引擎最近还在访问它。这两个状态分开看,排查时才不会把“多抓了几次”当成“已经处理好了”。
非 HTML 资源的治理不需要大动作,关键是别一刀切。先盘清单、分类型、区分抓取与索引,剩下的就是等索引数据更新,每隔一段时间复查一次即可。