同一个页面,如果存在多个可访问的地址,蜘蛛和用户就会在不同 URL 之间来回切换。对站点来说,这不算致命问题,但会分散链接权重、增加抓取消耗,也让统计口径变得混乱。URL 规范这件事不复杂,难在坚持,下面按顺序过一遍。
同一页面常见的多种地址形态
- 协议与主机名不一致:http 与 https 并存,带 www 与不带 www 同时可访问。
- 路径细节不一致:结尾斜杠有无、路径大小写不同、末尾挂一个 index.html 或 index.php。
- 参数拼接:utm_source 等追踪参数、排序与筛选参数、会话 ID、翻页参数。
- 锚点与编码:带 #锚点 的地址被当成独立 URL,中文路径未做统一编码。
这些地址如果都能返回 200,就等于给同一份内容发了好几张身份证。
一步一步做归一
- 先定基准:确定唯一的主机名(带不带 www)、唯一的协议(https)、唯一的路径写法规则(是否保留结尾斜杠)。选定后写进团队文档,别每次临时决定。
- 全站扫描:用爬虫工具或服务器日志导出可访问 URL,按去掉参数后的路径分组,找出指向同一内容的多个地址。
- 非基准地址做 301:统一跳到基准版本,且一步到位,不要中间再跳一站。
- 站内链接同步改成基准写法:菜单、面包屑、正文内链、分页链接、RSS 都算在内。
- 站点地图只放基准地址,不要再把带参数的版本一并提交。
- 检查 canonical:自引用且指向基准地址,避免指向一个本身会跳转的地址。
canonical 使用中的几个坑
不要和 301 互相矛盾
如果 A 已经 301 到 B,A 页面上的 canonical 却写回 A,等于给蜘蛛两个相反的信号。二选一,保持一致。
不要跨页误标
把列表页的每一页都标成 canonical 指向第一页,是分页场景里的常见做法。这会让后续页面的内容难以被单独理解,需要根据实际需要判断,必要时保留自引用。
不要在 canonical 里塞会变的参数
canonical 指向的地址本身如果带排序参数,等于没有统一。
参数 URL 的处理思路
先分清哪些参数会改变页面的主要内容,哪些只是展示方式。筛选、排序、追踪、会话类参数大多属于后者,可以在服务器或 CDN 层面统一跳转到无参数版本;如果无法跳转,可以在 robots.txt 里屏蔽抓取,或在站长工具中设置参数处理规则。需要注意的是,屏蔽的是抓取而不是索引,被外部链接引用的参数地址仍可能出现在结果里,所以规范标签最好一起用上。
改完之后怎么看效果
- 随机抽查各栏目页面,确认只有基准地址返回 200。
- 查看日志中蜘蛛访问的 URL 形态,看带参数、带 index.html 的请求是否在减少。
- 在搜索平台的工具里核对已收录地址与站点地图提交的地址是否大体一致。
- 复查内链,确保没有页面还在链向旧的写法。
URL 规范不是一次性任务。模板改一次、活动页加一次参数、编辑器自动补一次斜杠,都可能让老问题重新出现。把检查频率固定下来,比一次做得完美更管用。
归根结底,目标只有一个:让每份内容都只有一个正式地址,其余写法都能干净地指向它。做到了,抓取、统计和后续的改版都会省心不少。