很多站点的问题不是出在内容或结构上,而是从第一步就分叉了:同一套页面同时能通过 http、https、带 www、不带 www 四种地址打开。对用户来说这只是输入习惯的差别,对搜索蜘蛛来说却是四个互不相关的站点,抓取额度被摊薄、外链信号被拆分、日志统计也对不上账。
先数一数你有几个入口
把下面这些组合分别在浏览器里打开,看是否都能返回 200,还是会被跳转:
- http://example.com 与 https://example.com
- http://www.example.com 与 https://www.example.com
- 带默认端口的写法,如 https://example.com:443
- 历史上用过的备用域名、测试域名、老品牌域名
只要有任何一个组合返回 200 而不是跳转,就等于多开了一个入口。
选定唯一版本,其余全部 301
先决定正式版本,通常是 https 加主域名,或者 https 加 www,然后把其余所有形式都用 301 指过来。尽量避免用 302 或 JS 跳转:临时跳转传递的信号弱,脚本跳转蜘蛛经常不执行。跳转也要一步到位,别让 a 跳到 b、b 再跳到 c。
自查清单
- 全站跳转规则是否覆盖 http 到 https、非 www 到 www(或相反);
- 跳转目标是否就是最终地址,而不是另一个还要再跳一次的中间地址;
- 证书是否同时覆盖裸域与 www,有没有过期或域名不匹配的告警;
- 内链是相对路径还是写死的绝对地址,写死的那些是否统一到正式版本;
- canonical、og:url、sitemap 里的地址是否与正式版本完全一致;
- 站长工具里是否同时存在多个属性,数据是不是被拆开在看。
CDN、回源与 HSTS 的细节
回源协议要对齐
如果用了 CDN,边缘节点到源站的回源协议也要对齐。常见坑是外部已经是 https,回源却走 http,源站日志里全是 http 记录,排查时很容易误判。
HSTS 要确认子域可用
启用 HSTS 后浏览器会强制走 https,这本身是好事,但要确认所有子域都真的支持 https,否则某些子域会直接打不开,反而制造新的访问异常。
内容与内链的一致性
正文里引用自己站点的链接、图片地址、附件下载地址,往往是最容易被忽略的一批。改版或换域名时,模板里的链接改干净了,编辑手写在正文里的旧地址还留着,一篇篇点开才发现。可以定期用站内爬取工具扫一遍,把指向旧版本的链接列出来统一替换。
用日志验证结果
规则改完不代表生效。隔几天翻一次服务器日志,按 Host 字段统计蜘蛛请求的分布:如果正式版本占绝大多数、其余版本只剩少量 301,说明归一化起效了;如果旧版本仍持续收到 200 响应,说明还有规则没覆盖到。
归一化这件事做一次就能长期受益,但每次换域名、加 CDN、上证书都值得重新检查一遍,因为它太容易被后续的配置改动破坏。