在网站首选域名设置完成后,日志中最该核对的字段是请求URL的主机名(Host)和响应状态码(Status)。前者判断用户和搜索引擎实际访问的是不是首选域名,后者判断非首选域名是否已正确跳转。只改配置不看日志,很容易漏掉跳转链、混合主机名或回源直连的问题。
首选域名是你在站点中对外统一使用的那个主机名,例如带 www 或不带 www 的版本。设置目标通常有两个:首选域名返回正常内容,非首选域名跳转到首选域名。要验证这一点,日志至少要保留以下字段:
Host:请求到达时使用的主机名,是判断首选域名的核心字段。Request URI:请求路径,用于确认跳转后路径是否保留。Status:状态码,用于区分 200、301、302、404、5xx。Referer:来源页,辅助判断跳转是否发生在站内。User-Agent:区分普通浏览器与搜索引擎抓取工具。Server IP或上游地址:判断请求是否经过 CDN 或负载均衡。如果日志由 CDN 或反向代理生成,还要确认记录的是客户端请求的 Host,还是回源请求的 Host。两者不一致时,单看一份日志会得出错误结论。
在服务器或日志平台中,按时间范围导出访问日志,然后按 Host 字段分组统计。假设日志格式中 Host 位于某一列,可以用命令行筛选:
awk '{print $1, $9, $10}' access.log | sort | uniq -c | sort -nr
这里的列号只是示例,实际列号取决于日志格式,需要先查看一条原始日志确认。筛选后重点观察三类记录:
最关键的一步是把非首选域名的 200 响应单独列出来。如果非首选域名直接返回 200,说明跳转没有生效,或者跳转只在前端页面层面完成,搜索引擎仍可能把两个主机名当作可访问地址。
日志中的状态码需要结合跳转链一起看。可以按以下检查项逐条判断:
/page-a 跳到首页,说明重写规则没有保留 Request URI。日志只能证明请求层的行为。要确认搜索引擎看到的结果,还需要分别核查不同搜索引擎的抓取工具是否访问了非首选域名。不同搜索引擎对跳转和首选域名的处理并不完全一致,不能用一个平台的结果推断全部。
首选域名设置不是一次配置就结束。CDN 换节点、证书续期、应用发布、反向代理规则调整,都可能让非首选域名重新返回 200。建议在发布后和每月固定时间执行同一套日志筛选,记录以下结果:
需要区分的是:robots.txt 的抓取限制不等于可靠的索引移除,站点地图也不保证收录。HTTPS 只说明传输加密,不保证没有漏洞或排名提升。这些都不能替代首选域名的跳转核对。
下一步,从最近一天的访问日志中导出 Host 与 Status 两列,统计非首选域名的状态码分布。如果发现 200 响应,优先检查该主机名对应的服务器块、CDN 回源配置和应用路由,而不是先改页面内容。