把资料下载、产品手册、白皮书這類附件放在站点里,是很常见的运营動作。但翻服務器日誌时经常能看到一個現象:附件所在的栏目頁被反复抓取,附件本身的地址却几乎没被訪問過。原因通常不是内容没價值,而是連結形態决定了蜘蛛走不到那里。
附件地址為什么容易被漏掉
搜尋蜘蛛识別連結的方式很朴素:它在 HTML 里寻找可点击的锚点地址,然後按队列去抓。凡是需要人為操作才能产生請求的路径,它基本不會主動触發:
- 用按钮加脚本绑定的下载行為,HTML 里只有一個按钮元素;
- 表單提交後才返回文件,請求方式是 POST,没有可跟進的 URL;
- 下载地址寫在 JavaScript 變量里,初始 HTML 中並不出現;
- 連結指向一個中轉接口,接口再跳轉 302 到真實文件。
這些做法對用戶体驗没有影响,但對 URL 發現来说,等于把附件鎖在了蜘蛛進不去的房間里。
更稳妥的几種連結形態
让附件地址出現在初始 HTML 里
最直接的方式,是在詳情頁用普通 a 标簽指向文件地址,例如 /files/report-2024.pdf。只要它出現在初始 HTML 中,蜘蛛就有机會顺着抓取。如果必须用脚本控制交互,至少保證頁面上存在一個可点击的真實連結作為兜底。
给附件配一個 HTML 承载頁
PDF、表格、压缩包這類文件本身缺少可供解讀的正文结构,即使被抓到,也很难形成清晰的标题和摘要。更稳妥的做法是為每份附件建一個獨立頁面:寫清楚它是什么、包含哪些内容、适用哪些场景、最近更新于什么時間,再在頁面里给出下载連結。這样 URL 發現和内容理解两件事就分開了,各自都能做得更充分。
目錄與命名保持稳定
附件地址不必花哨,但要可讀、可预期。建议按栏目或年份分目錄,文件名使用可讀的英文或拼音,避免用一串無意义的哈希值。改版时尽量保留舊地址或做好跳轉,不要直接刪除——已经發現的連結一旦返回 404,之前积累的抓取记錄就浪費了。
几種容易被忽视的干扰
- 响應头里的附件下载标记會让部分场景下的蜘蛛把它当作文件而不是頁面處理,HTML 承载頁最好不要带這個头;
- 承载頁加了 noindex,或者在 robots.txt 里被整段拦掉,連結自然不會再被跟進;
- 把几百條附件連結全塞進一個列表頁,連結數量過多反而分散了每條被處理的机會;
- 多個栏目分別指向同一個文件的副本,地址不同内容相同,容易造成重复抓取。
用日誌做一次简單校驗
與其猜测,不如抽查。挑一周日誌,筛出蜘蛛的訪問记錄,看附件地址出現的次數、返回碼分布,以及它們是從哪個頁面被發現的。如果某個附件從来没出現過,就回到它所在的頁面,检查連結是不是還藏在按钮里;反之,如果某個附件被反复抓取却没有對應的可见入口,那說明站点里可能残留着只對蜘蛛可见的連結,需要清理。
附件不是站点的邊角料,很多行业站的核心訪問就来自资料頁。把它当成正常頁面来经营,比事後补推要省力得多。
最後提醒一句:以上做的是提高被發現的概率,並不等于一定被收錄。把它当成日常结构维護的一部分,持續看日誌和索引資料,按實际反馈調整即可。