同一个站点,往往能用好几个地址打开:带 www 的、不带 www 的、http 的、https 的,甚至大小写不同的写法。访客打开哪个都能看到同一套页面,但蜘蛛会把这些当成不同地址,抓取、外链和统计数据被分散。把主机名和协议统一,是站点运营里一次做完、长期省事的基础工作。
先数清楚站点有几个入口
拿一张纸把下面几组地址都列出来,逐个用浏览器打开,看它们各自返回什么状态。
- 主域名与 www 子域:example.com 和 www.example.com 是否都能访问,谁是主,谁跳向谁。
- http 与 https:http 版本是直接跳到 https,还是仍然能正常返回页面。
- 大小写与端口:大写形式的域名、带 :80、:8080 之类的写法是否被服务器接受。
- 默认文档与尾部斜杠:/about 和 /about/ 是否指向同一页。
- 备用域名:老域名、测试域名、CDN 提供的临时域名是否对外可访问。
统一方向上的自查清单
- 是否选定了一个唯一的主地址(例如统一的 https 加带 www,或 https 加不带 www),并且全站都向它靠拢。
- 其他所有写法是否返回 301 永久跳转,而不是 302、跳转套跳转,或者干脆也返回正常页面。
- 页面里的 canonical 标签写的是不是这个主地址,且与跳转方向一致,没有互相打架。
- 站点地图、RSS、分享按钮生成的链接,是否都用主地址形式。
- 站内链接、导航、面包屑里的写法是否统一,没有混着 http 和 https。
- HTTPS 证书是否覆盖所有会用到的域名,包括 www 子域和各备用域名。
- Cookie 的 domain 设置是否与主地址对应,避免登录状态在两个版本之间来回丢。
- CDN 或反向代理的跳转规则是否和源站一致,别出现两边各跳一次。
改的时候注意顺序
先确认证书正常、全站 https 可用,再动跳转规则;先做小范围测试,再全量放开。跳转尽量写在服务器或 CDN 这一层,不要靠页面里的脚本跳转,那对蜘蛛来说约等于没有跳转。改完之后,把常用的入口地址再打开一次,确认状态码是 301 且目标正确。
如果站点曾经长期存在两种形式,不要指望一次改动就马上收敛。旧地址上残留的外链会被持续访问一段时间,保持跳转规则长期有效即可,不必急着撤掉。
容易被忽略的细节
- 表单提交地址:页面是 https,表单的提交地址却写着 http,浏览器会给出混合内容提示。
- 图片与静态资源:同样要与主协议一致,否则可能出现资源加载被拦。
- HSTS:确认全站 https 稳定之后再考虑开启,开早了不好回退。
- 访问日志:翻日志时留意蜘蛛访问的是哪个主机名,如果两种形式都有大量记录,说明收敛还没做好。
统一主机名不会直接带来流量变化,但它能让抓取、统计和外链数据落在同一个账本上。做完这一步,后续的日志分析和结构优化才有可靠的前提。