大部分收錄话题都在讨论 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 资源的治理不需要大動作,關键是別一刀切。先盘清單、分類型、区分抓取與索引,剩下的就是等索引資料更新,每隔一段時間复查一次即可。