入口页数量一多,URL 写法上的小差异就会被放大。同一篇内容可能出现 /news/123、/news/123/、/News/123 三种形态,在蜘蛛眼里它们是三个不同的地址,抓取次数、链接池记录、日志统计都会跟着分裂。URL 结构本身不决定收录,但它直接影响蜘蛛能不能理顺一个站点的抓取路径,值得在接入蜘蛛池之前先把规则定下来。
写法不统一会带来哪些麻烦
- 同一个页面被拆成多个地址,抓取请求重复消耗在相同内容上。
- 链接池入库通常按字符串去重,大小写和斜杠不同就当成新 URL,出库队列越滚越长。
- 日志里同一页面的访问数据分散在好几条记录中,判断抓取效果时容易误判。
- 站内链接指向不一致,蜘蛛在几个变体之间来回爬,形成低效循环。
最常见的几类差异
大小写
Linux 环境下 URL 路径区分大小写,/News/123 和 /news/123 是两个资源。比较省事的做法是路径和文件名统一使用小写;如果历史原因已经存在大写地址,用 301 归到小写版本,不要同时保留两套可访问的副本。
末尾斜杠
带不带斜杠在很多服务器配置里同样是两个地址。目录形式的页面和文件形式的页面最好分开对待,选定一种作为标准写法,另一种统一 301 过去。混着来最容易让入口页批量生成时出现两套地址。
查询参数
分页、排序、筛选、来源跟踪这几类参数最容易失控。来源跟踪类参数(utm、ref、from 等)可以让它继续起作用,但页面上的 canonical 应指向不带跟踪参数的干净地址;分页参数则要保留,一律砍掉会让蜘蛛拿不到后续列表。参数顺序尽量固定,避免 ?a=1&b=2 与 ?b=2&a=1 同时存在。
其他容易被忽略的小差异
- 默认端口是否显式写出,例如 :80 与 :443。
- www 与非 www 是否都返回 200。
- 路径中连续出现的双斜杠。
- 中文字符转义与未转义两种形式并存。
定规则的实际做法
- 先选一个标准形态,例如全小写、不带末尾斜杠、不带跟踪参数。
- 在服务器层做统一:所有变体 301 到标准形态,不要依赖 JS 跳转。
- 站内链接、sitemap、链接池入库都按标准形态生成,从源头减少变体。
- canonical 作为兜底标注在页面上,但不要拿它替代 301。
- 改完之后观察一段时间日志,看变体请求是否真的下降。
入口页要额外注意的几点
- 入口页数量大、模板相似,批量生成 URL 时更容易出现拼写残留和参数残留,生成脚本里最好加一道规范化处理。
- 跳转链路上不要再套一层带参数的地址,否则每跳一次就多出一个变体。
- 避免在入口页输出随机串或时间戳参数,这类参数会让 URL 数量无限增长,把抓取次数耗在空页面上。
规范化的目标是让蜘蛛把有限的抓取次数花在真正不同的内容上,而不是在同一个页面的多个写法之间打转。它不保证收录,但能减少无谓的消耗。
URL 结构不是接入蜘蛛池之后才需要处理的事,它属于站点的基础准备工作。规则定得越早,后续换域名、换模板、扩入口页的时候越省事。