301转向_日志中应该核对哪些字段

📍 WDQWDWQD987AAAAA:216.73.217.165
📱 Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
🔗 /a64359d92d1e.html
📄

301转向_日志中应该核对哪些字段

排查301转向时,日志里最先要核对的是请求行中的状态码、请求URL、响应 Location 头、User-Agent 和请求时间。其中状态码决定这次跳转是否真的按 301 返回,Location 决定跳去了哪里,请求URL决定谁被跳转,User-Agent帮助你区分搜索引擎与普通访客,时间用于判断改动是否生效。人手有限时,先看状态码和 Location,再看请求URL与时间,最后才做细分统计。

先确认日志格式,再决定字段名

不同服务器和日志工具的字段命名不一样,不要直接套用别人的列名。先打开一条原始日志,确认它记录的是访问日志、错误日志还是 CDN 回源日志,再对照字段含义。

如果日志只记录状态码,不记录 Location,就不能只凭状态码判断跳转是否正确。此时应优先检查服务器配置中的跳转规则,再用一次实际请求验证响应头。

按优先级核对字段,先处理影响抓取的问题

时间和人手有限时,可以按下面顺序处理。这个顺序的依据是:状态码和 Location 直接决定跳转是否成立,请求URL和时间决定影响范围,User-Agent 决定问题是否发生在搜索引擎抓取环节。

  1. 先筛状态码。把日志中返回 301 的请求单独列出。若大量旧URL返回 404 或 200,说明跳转规则没有覆盖到,应优先补规则,而不是继续看细分报表。
  2. 再看 Location。核对跳转目标是否指向新URL,是否出现跳转到首页、跳转到错误路径、跳转链过长。Location 指向与预期不一致时,先修规则。
  3. 然后看请求URL。确认被跳转的是旧路径、带参数路径还是大小写不同的路径。带参数的旧URL如果没有被规则覆盖,可能仍返回 404。
  4. 对比时间。用配置修改时间与日志时间对照。若修改后仍有大量旧状态码,说明缓存、CDN 或规则优先级可能仍在起作用。
  5. 最后看 User-Agent。如果浏览器访问正常、搜索引擎抓取仍命中旧地址,应检查抓取工具是否被单独规则处理,或站点地图与内链是否仍指向旧URL。

验收信号可以这样判断:旧URL请求返回 301,Location 指向正确的新URL,新URL返回 200,且日志中不再出现旧URL返回 404 或 200 的情况。若旧URL仍返回 200,说明跳转没有生效;若返回 302,说明不是永久跳转;若返回 404,说明规则缺失或路径不匹配。

一个可执行的短例子

假设旧地址是 /old-page,新地址是 /new-page。修改规则后,在日志中查找包含 /old-page 的请求行,核对同一行或同一次响应的状态码是否为 301,Location 是否为 /new-page。如果状态码是 301 但 Location 指向 /,说明规则写成了首页跳转,应修正目标路径。如果状态码是 404,说明规则没有匹配到该路径,应检查路径大小写、结尾斜杠和参数处理。

这个例子只适用于你能拿到响应头或服务器配置的情况。若日志不记录 Location,就不能只靠日志下结论,应结合一次实际请求的响应头核对。

容易误判的几种情况

日志中出现 301 不等于索引已经更新。robots.txt 的抓取限制不等于可靠的索引移除,站点地图也不保证收录。HTTPS 不保证安全无漏洞或排名。不同搜索引擎对跳转和抓取的处理需要分别核查,不能用一个平台的日志结果推断所有平台。

另外,CDN 缓存可能让旧响应继续出现,回源日志和边缘日志的状态码也可能不同。遇到这种情况,先确认你查看的是哪一层日志,再对比回源结果。若边缘返回 301、回源返回 200,说明跳转发生在边缘层,应检查 CDN 规则而不是源站规则。

下一步:从日志中导出最近一段时间内包含旧路径的请求,按状态码和 Location 分组,先修状态码不是 301 或 Location 不正确的规则,再观察新日志中旧路径是否仍被访问。

图1 图2

nginx