很多人做收錄检查时只盯着 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 和图片請求,對照是否有對應的連結来源。
這些检查不保證反映完整情况,但足以發現明顯的疏漏。收錄取舍的核心還是那句话:先想清楚這個文件被搜到时對訪問者有没有用,再决定是優化它,還是挡住它。