很多人做收录检查时只盯着 HTML 页面,但搜索引擎的索引里其实混着不少非网页文件:产品说明书 PDF、图片、PPT、Excel 表格,甚至上传的压缩包。它们同样会被发现、抓取、进入索引,出现在网页搜索或图片搜索里。如果这些文件本来只是内部流转用的,被收录之后往往会带来一些麻烦。
这些文件是怎么被发现的
爬虫并不按文件类型分门别类,只要 URL 出现在它能到达的地方,就会尝试抓取:
- 页面上的下载链接、图片 img 标签、附件列表;
- sitemap 里列出的文件地址;
- 被其他网站直接链接过去的 PDF;
- 由 JavaScript 渲染出来的下载按钮,如果渲染结果能被爬虫看到,链接同样会被提取。
发现之后能不能抓取,取决于 robots.txt;抓取之后进不进索引,则要看文件本身有没有内容、以及是否被指令拦住。这和 HTML 页面是同一套逻辑。
非 HTML 文件在索引里长什么样
搜索引擎读不到 PDF 的标题标签,只能从文件内部找线索:文档属性里的标题、正文第一段,或者干脆用文件名。所以你会看到搜索结果里出现类似「用户手册_v3_final.pdf」这样的标题,摘要也只是从正文里抽出来的一段文字,读起来常常断头断尾。
这意味着两件事:这类结果的点击表现通常不稳定;而文件名和文档属性其实是有优化空间的,改一个清晰准确的文档标题,往往比反复提交 sitemap 更直接。
哪些该留,哪些该挡
判断标准和网页一样:这个文件被陌生人搜到时,对双方有没有价值。
- 值得收录:对外发布的白皮书、规格书、公开报价单、教程类的图片素材。它们本身就是内容,能带来自然流量。
- 不值得收录:内部流程文件、测试用的临时图片、只在活动页面用一次的海报,以及同一份文件的多个历史版本。
第二种情况积累多了,索引里就会堆满没人看、还可能是旧版本的文件,既稀释整站质量,也让真正重要的页面更难被正确评估。
用抓取指令还是用索引指令
挡住非 HTML 文件有两条路,作用点不同:
- robots.txt 的 Disallow:阻止爬虫抓取。文件不会被读取,自然也不会进入索引。
- X-Robots-Tag:这是一个 HTTP 响应头,可以给 PDF、图片、Office 文档单独加 noindex。文件仍会被抓取,但不会被编入索引。
这里有个常见坑:Disallow 和 noindex 不要同时用。爬虫被 robots.txt 拦住之后,就读不到响应头里的 noindex,结果可能是文件因为外部链接而仍然留在索引里,而你却以为已经处理干净了。
如果只是不想让某个文件出现在搜索结果里,用 X-Robots-Tag 更稳;如果连抓取都不希望发生(比如服务器压力或内容本身敏感),再考虑 Disallow,但要接受可能出现“被链接但抓不到”的索引状态。
同一份文件的多个版本
非 HTML 文件特别容易出现重复:一份方案 PDF 同时挂在 /download/、/files/ 和带追踪参数的地址下;一张图有缩略图、中等图、原图三个版本。这些在爬虫眼里都是各自独立的 URL。
处理思路是收敛到主地址:保留一个正式链接,其余版本在服务器层做跳转,或者至少不要让它们同时出现在导航和 sitemap 里。图片的多个尺寸也尽量只让其中一个进入页面结构。
怎么抽查
- 用文件名、文档标题里的独有关键词去搜,看有没有意料之外的结果;
- 用 site: 限定域名加文件后缀,粗略看看收录了哪些类型;
- 翻一下服务器日志里返回 200 的 PDF 和图片请求,对照是否有对应的链接来源。
这些检查不保证反映完整情况,但足以发现明显的疏漏。收录取舍的核心还是那句话:先想清楚这个文件被搜到时对访问者有没有用,再决定是优化它,还是挡住它。