搜索抓取

多入口站点的 URL 发现:先统一主机名与协议

同一份内容挂在 http、https、带 www 和不带 www 等多个入口上时,抓取路径会被拆散,URL 发现效率随之下降。本文说明搜索蜘蛛区分站点的依据,给出入口盘点方法、301 收敛顺序,以及端口、测试域名、m 站等容易被忽略的小入口。

搜索抓取

多入口站点的 URL 发现:先统一主机名与协议

搜索蜘蛛怎么判断“这是同一个站”

抓取队列是按 URL 组织的,而 URL 里最靠前的部分就是协议和主机名。http 与 https、带 www 与不带 www、example.com 与 example.com:8080,在抓取系统眼里是几个不同的入口。哪怕页面内容完全一样,它们也会各自形成一条发现路径,各自记录自己的抓取情况。

这类问题在改版、上 CDN、加证书之后特别容易出现:新入口出现了,旧入口没有关掉,两边的内链还在互相指。

多入口会带来哪些具体麻烦

  • URL 发现被摊薄:站内链接一半指向 A 主机、一半指向 B 主机,蜘蛛要跑两遍才能覆盖同一批页面。
  • Sitemap 声明冲突:文件里写的是 https 版本,站内链接却大量使用 http 版本,声明和实际入口对不上。
  • 日志失真:按 URL 统计访问时,同一页面被拆成几份,很难判断哪些入口真的被走过。
  • canonical 与重定向打架:页面自己声明 A 为主,服务器又把 A 跳到 B,蜘蛛拿到的是矛盾信号。
  • 测试域名被带进来:预发环境、CDN 默认域名如果缺少访问限制,可能被外部链接拉进抓取队列。

先做一次入口盘点

不依赖工具也能查个大概:

  1. curl -I 分别请求 http 与 https、带 www 与不带 www 的首页,看返回的是 200 还是 301,跳转终点是哪一个。
  2. 在服务器日志里按 host 分组统计,看有几个主机名在持续被访问,其中哪些是自己没打算公开的。
  3. 抽查首页、栏目页、详情页源码,看内链写死的主机名是否一致;导航、页脚、面包屑经常是三套写法。
  4. 打开 sitemap 索引和分片文件,确认里面所有 loc 都指向同一个主入口。
  5. 检查 CDN 与反向代理配置,有没有把某个域名的请求直接回源到同一份内容。

整理动作按这个顺序做

先选定一个主入口,再让其它入口全部 301 过去,顺序不要反过来。

  • 服务器层面:把非主入口的协议与主机名统一 301 到主入口,保留原路径和参数,不要一律跳到首页。
  • 站内层面:模板里的内链、分页、筛选、RSS 输出,全部改用主入口。
  • Sitemap 层面:文件内容与主入口一致,旧文件如果不再使用就替换掉,不要长期留两份。
  • 声明层面:canonical、og:url 与主入口保持一致,避免和 301 给出相反信号。
不要用 robots.txt 屏蔽旧入口来代替跳转。被屏蔽的 URL 仍然可能被外部链接发现,蜘蛛只是拿不到跳转信号,入口问题会一直留着。

容易被忽略的小入口

  • 端口号:不带端口与带 80/443 的写法,在部分服务器配置下会被当成不同来源。
  • 大小写与结尾点:Example.com、example.com. 在部分解析环境下指向同一份内容。
  • IP 直连和临时域名:调试时留下的链接、监控探针、第三方截图服务都可能留下记录。
  • m 站与多语言子域:如果内容与主站重复,需要明确各自的主入口关系,而不是让两边互链。
  • 混合内容:HTTPS 页面里引用 HTTP 资源,会让蜘蛛在两种协议之间来回切换。

整理之后看什么

观察两周左右的日志,重点看三件事:持续被访问的主机名是否收敛到一个;同一页面的抓取记录是否合并;新页面上线后第一次被发现的时间有没有变短。这些指标比“收录了多少条”更能说明入口是否已经理顺。