站点运营久了,域名和访问入口往往会变多。比如早期用 www,后来换成不带 www;或者买了更短的备用域名;又或者上线过测试域名、CDN 域名、旧版域名。如果这些地址都能打开完整页面,对用户可能只是“多一个入口”,但对搜索蜘蛛来说,就是同一套内容出现在多个 URL 上。抓取预算被分散,权重也可能被摊薄。
先把所有可访问地址列出来
自查第一步不是改配置,而是把已知入口写清楚。可以从这些地方找:
- 域名注册商和 DNS 解析记录里的 A 记录、CNAME 记录;
- 服务器 Nginx/Apache 配置中的 server_name;
- CDN 或对象存储绑定的加速域名;
- 站长平台和统计工具里出现过的来源域名;
- 历史页面、旧邮件、旧宣传物料里用过的地址。
列完之后,逐个用浏览器无痕模式访问,看返回的是不是同一套内容。如果某个地址能正常打开,但你没打算把它当主入口,就需要处理。
确定唯一主域名,其余做 301
主域名最好只保留一个。常见做法是选带 www 或不带 www 的其中一个,然后把另一个做 301 永久跳转。旧域名、备用域名、测试域名也同理:如果不再使用,可以解析到主域名并 301;如果只是内部测试,应该加访问限制,不要让蜘蛛抓到。
注意跳转链不要太长。比如旧域名跳到备用域名,再跳到 www,最后又跳到带路径的地址,这种多跳会浪费抓取资源。理想情况是一步到位:旧地址 301 到主域名对应的最终 URL。
canonical 与站点地图要指向主域名
页面里的 canonical 标签是告诉蜘蛛“哪个地址是正版”的重要信号。如果 canonical 写的是备用域名,或者一会儿 www 一会儿非 www,蜘蛛会收到矛盾信息。建议全站模板统一输出主域名,并确保 canonical 中的地址和当前页面最终可访问地址一致。
XML 站点地图也一样。站点地图里列出的 URL 应该是主域名下的最终地址,不要混入重定向地址、参数地址或测试域名。提交前可以抽查几条,看看打开后是否直接返回 200,而不是先跳转。
内链和资源地址别混用域名
站内链接、图片、CSS、JS 的地址如果混用多个域名,也会让蜘蛛发现更多入口。比如文章内链有时写 www,有时写裸域,有时又引用 CDN 域名下的页面地址。建议在模板和编辑器里统一使用相对路径或主域名绝对路径。
对于 CDN 上的静态资源,通常不需要被当作页面抓取。可以在 CDN 域名下配置 robots.txt 或响应头,避免蜘蛛把资源域名当成内容站来爬。
镜像站与测试站要做隔离
有些团队会用镜像站做负载或容灾,或者用测试站预览新版本。这些站如果对公网开放,且没有访问限制,很容易被蜘蛛发现。处理方式包括:
- 测试站加基础认证或 IP 白名单;
- 镜像站只对内部或特定回源开放;
- 如果必须公开,至少用 robots.txt 禁止抓取,并加 noindex;
- 不要在主站的站点地图或内链里指向测试域名。
一份可执行的自查清单
- 列出所有能返回完整页面的域名和子域名。
- 确定唯一主域名,其余地址配置 301,尽量一步到位。
- 检查全站 canonical 是否统一指向主域名最终 URL。
- 检查 XML 站点地图是否只包含主域名地址。
- 抽查内链、图片、JS、CSS 是否混用域名。
- 检查旧域名、备用域名是否还有可访问页面。
- 确认测试站、镜像站没有对公网开放抓取。
- 在服务器日志里观察是否还有蜘蛛访问非主域名。
多域名问题不会立刻带来严重后果,但它会慢慢让 URL 入口变得混乱。每次改版、换域名、上 CDN 之后,顺手做一遍入口自查,比等到日志里出现大量重复抓取再回头处理要省事。