很多人做收录核对时只盯着 HTML 页面,实际在搜索结果的索引里,PDF、图片、Office 文档、压缩包这类非 HTML 资源同样可能单独出现。它不一定是坏事:一份产品手册、一张规格图被搜到,本身就是流量入口。问题在于,当同一份文件存在多个地址、旧版本没撤干净、或者附件目录被整站抓取时,索引里就会堆积大量低价值或重复的资源 URL。
先确认:被收录的到底是什么
在做任何处理之前,先把“我以为”换成“记录里是什么”。
- 在搜索结果里用 site:你的域名 filetype:pdf(或对应扩展名)看有多少资源被单独展示;
- 在抓取日志里筛选静态资源请求,看哪些文件的请求量异常高;
- 用 curl -I 或浏览器开发者工具看响应头,确认 Content-Type 与状态码,别把 200 当成正常页面;
- 确认这个 URL 是独立可访问的,还是只在某个 HTML 页面里以内嵌资源的形式出现。两者在索引里的表现完全不同。
这里要区分一件事:被抓取不等于被收录。日志里出现请求,只说明蜘蛛来过;是否进入索引,要看该 URL 能否以独立结果被检索到。
非 HTML 资源的核对顺序
- 可达性:状态码是否 200,是否跟随重定向后落到另一个地址。
- 唯一性:同一份文件是否存在多个路径,比如上传目录、缩略图目录、带时间戳的旧版本。
- 独立性:该资源是否有独立检索价值,还是只是页面里的一张配图、一个下载附件。
- 公开性:是否本就不该被外部访问,例如内部报价单、测试文档。
- 处理方式:按上面的判断,分别选择保留、合并、阻止抓取或直接下线。
顺序不要颠倒。比如还没确认资源是否重复,就先在 robots.txt 里屏蔽整个上传目录,结果可能是:新文件也抓不到,旧文件因为早已被索引,短期内仍然存在。
几种处理手段的区别
- 保留:资源确实有检索价值时,给它一个规范的直达地址,并让相关 HTML 页面链接过去;文件本身尽量精简、命名清晰。
- X-Robots-Tag: noindex:写在 HTTP 响应头里,可以阻止该资源进入索引,同时不阻断抓取,适合“能下载但不想被搜到”的文件。
- robots.txt 屏蔽:阻止的是抓取。对尚未被抓到的资源有效,对已经进入索引的 URL 未必能立刻移除,而且屏蔽后核对会更麻烦。
- HTTP 头里的 Link rel="canonical":指向对应的 HTML 版本,让资源页与内容页的索引归属更清晰,适合“同一内容既有网页又有附件”的场景。
- Content-Disposition: attachment:只是改变浏览器的打开方式,不改变索引状态。
- 直接下线:不该公开的文件应当从服务器移除并做权限控制,返回 404 或 410,而不是只靠规则遮住。
规则只能影响搜索引擎的行为,不能替代权限管理。敏感文件该删就删,不要指望 noindex 兜底。
容易被忽略的几个点
- 同一份 PDF 被多次上传,文件名不同、内容相同,容易形成跨 URL 重复;
- 图片搜索结果与网页搜索结果的口径不同,图片被收录不等于页面被收录;
- 站点地图里只放页面 URL,不要把附件、缩略图一股脑塞进去,否则等于主动扩大发现面;
- 附件所在目录如果允许列目录,蜘蛛和普通访客都能顺着列表翻到大量文件。
改完之后怎么复查
规则上线后,先看日志里对应目录的请求是否出现变化,再隔一段时间看这些 URL 是否还以独立结果出现。索引状态的更新有滞后,用一两天就下结论容易误判。把每次调整的时间点、改了什么、观察到的结果记下来,下一次遇到同类问题时就有参照,而不是每次重新猜。