检查访问状态的核心,是确认搜索引擎抓取工具能否以正常HTTP状态获取目标URL,并拿到与用户浏览器一致的内容。操作上分四步:先用可复现的命令观察响应,再判断状态码属于正常、重定向还是阻断,接着针对原因处理,最后复查抓取与索引数据是否恢复。下面按这个顺序展开。
不要只看浏览器能否打开页面,浏览器会补全协议、跟随跳转、携带Cookie,容易掩盖问题。建议用命令行工具直接请求,记录状态码、响应头和最终地址。
curl -I -L --max-redirs 5 https://example.com/page
判断依据:
200:可直接访问,继续检查内容是否与预期一致。301或302:发生了跳转,需要看清最终落点是否是目标页。403、429:请求被拒绝或限流,抓取工具很可能拿不到内容。404、410:页面不存在,若本应存在则属于配置或发布错误。5xx:服务端异常,需先排查服务器与上游依赖。同时用curl -A "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" -I更换User-Agent再请求一次。如果普通请求正常、模拟抓取工具被拒,说明问题出在服务端对特定UA的规则上,而不是页面本身不存在。
状态码为200并不等于抓取正常,以下情况需要单独确认。
打开站点根目录下的/robots.txt,检查是否有Disallow规则覆盖了目标路径。注意规则按前缀匹配,Disallow: /会阻断整站;Disallow: /search会连带阻断/search-abc这类同前缀地址。若使用通配符或$结尾符,要按实际匹配结果判断,不要凭印象。
用无Cookie的请求访问一次。如果返回登录页或验证页而不是正文,抓取工具看到的内容与用户看到的不同。此时要判断这是有意设置(如会员内容)还是误配置。
用curl拿到的HTML里如果没有正文文字,只有脚本容器,说明内容依赖客户端渲染。这不必然是故障,但需要确认渲染后的内容可被抓取,可通过抓取工具自带的渲染测试或日志中的抓取记录核对。
命令行的结果是你主动请求得到的,服务器访问日志反映的是抓取工具真实到访情况,两者可能不同。检查日志时关注:
5xx或403。如果日志中该URL从未出现,说明抓取工具尚未发现或未选择抓取它,问题可能在内链、站点地图或提交环节,而不是访问被阻断。
按定位到的原因分别处理:robots规则误伤就修正规则;状态码错误就修复服务端或跳转链;UA拦截就调整规则并保留正常抓取;渲染问题就确认输出内容可获取。修改后不要立即下结论,复查要满足两点:
比较前后数据时,要考虑搜索需求的季节性波动和数据采集延迟,单日数值变化不足以证明修复生效。一次改动对应一次复查,避免同时改多项而无法归因。
下一步:挑一个当前状态异常的URL,先跑一遍上面的curl命令并保存输出,再与服务器日志中该URL的状态码对照,确认你观察到的现象与抓取工具实际遇到的是否一致,然后只针对已确认的那一项原因动手修改。