把资料下载、产品手册、白皮书这类附件放在站点里,是很常见的运营动作。但翻服务器日志时经常能看到一个现象:附件所在的栏目页被反复抓取,附件本身的地址却几乎没被访问过。原因通常不是内容没价值,而是链接形态决定了蜘蛛走不到那里。
附件地址为什么容易被漏掉
搜索蜘蛛识别链接的方式很朴素:它在 HTML 里寻找可点击的锚点地址,然后按队列去抓。凡是需要人为操作才能产生请求的路径,它基本不会主动触发:
- 用按钮加脚本绑定的下载行为,HTML 里只有一个按钮元素;
- 表单提交后才返回文件,请求方式是 POST,没有可跟进的 URL;
- 下载地址写在 JavaScript 变量里,初始 HTML 中并不出现;
- 链接指向一个中转接口,接口再跳转 302 到真实文件。
这些做法对用户体验没有影响,但对 URL 发现来说,等于把附件锁在了蜘蛛进不去的房间里。
更稳妥的几种链接形态
让附件地址出现在初始 HTML 里
最直接的方式,是在详情页用普通 a 标签指向文件地址,例如 /files/report-2024.pdf。只要它出现在初始 HTML 中,蜘蛛就有机会顺着抓取。如果必须用脚本控制交互,至少保证页面上存在一个可点击的真实链接作为兜底。
给附件配一个 HTML 承载页
PDF、表格、压缩包这类文件本身缺少可供解读的正文结构,即使被抓到,也很难形成清晰的标题和摘要。更稳妥的做法是为每份附件建一个独立页面:写清楚它是什么、包含哪些内容、适用哪些场景、最近更新于什么时间,再在页面里给出下载链接。这样 URL 发现和内容理解两件事就分开了,各自都能做得更充分。
目录与命名保持稳定
附件地址不必花哨,但要可读、可预期。建议按栏目或年份分目录,文件名使用可读的英文或拼音,避免用一串无意义的哈希值。改版时尽量保留旧地址或做好跳转,不要直接删除——已经发现的链接一旦返回 404,之前积累的抓取记录就浪费了。
几种容易被忽视的干扰
- 响应头里的附件下载标记会让部分场景下的蜘蛛把它当作文件而不是页面处理,HTML 承载页最好不要带这个头;
- 承载页加了 noindex,或者在 robots.txt 里被整段拦掉,链接自然不会再被跟进;
- 把几百条附件链接全塞进一个列表页,链接数量过多反而分散了每条被处理的机会;
- 多个栏目分别指向同一个文件的副本,地址不同内容相同,容易造成重复抓取。
用日志做一次简单校验
与其猜测,不如抽查。挑一周日志,筛出蜘蛛的访问记录,看附件地址出现的次数、返回码分布,以及它们是从哪个页面被发现的。如果某个附件从来没出现过,就回到它所在的页面,检查链接是不是还藏在按钮里;反之,如果某个附件被反复抓取却没有对应的可见入口,那说明站点里可能残留着只对蜘蛛可见的链接,需要清理。
附件不是站点的边角料,很多行业站的核心访问就来自资料页。把它当成正常页面来经营,比事后补推要省力得多。
最后提醒一句:以上做的是提高被发现的概率,并不等于一定被收录。把它当成日常结构维护的一部分,持续看日志和索引数据,按实际反馈调整即可。