检查博客访问状态,核心不是“页面能不能在自己浏览器打开”,而是看服务器返回的HTTP状态码、页面是否可被抓取,以及内容是否与用户看到的一致。很多人只用自己的浏览器访问一次,看到页面正常显示,就认为访问状态没问题,这恰恰是最常见的误解。浏览器会缓存、会带着登录状态、会执行JavaScript,而搜索引擎抓取工具看到的可能是另一回事。
你自己的访问至少受三层干扰。第一层是本地缓存和CDN缓存,旧页面可能被直接返回,掩盖了源站故障。第二层是登录态或Cookie,某些内容对已登录用户可见,对匿名抓取工具返回登录页或403。第三层是JavaScript渲染,浏览器把内容渲染出来了,但抓取工具拿到的初始HTML里可能空空如也。
因此,检查访问状态要回答三个独立问题:服务器对匿名请求返回什么状态码;返回的HTML里有没有正文;这个页面是否允许被抓取。三者缺一项,访问状态都不能算健康。
实际工作中通常有两种做法,适用条件不同,不能互相替代。
判断依据很简单:如果你只关心“刚改的那几篇有没有坏”,手动抽查就够;如果你要回答“整站有没有大面积访问异常”,必须批量。两者结合最稳妥——批量发现异常,手动确认原因。
以检查一篇博客文章为例,按顺序做以下动作:
curl -I请求该文章URL,只看响应头,确认返回的是200还是301、404、403、500。如果返回3xx,记下Location指向哪里。-I再请求一次正文,确认返回的HTML里包含文章标题和正文片段,而不是“请启用JavaScript”或登录提示。robots.txt或页面上的<meta name="robots">标记为noindex。状态码是200但被noindex,同样属于访问状态异常。判断结果:状态码200、正文可见、未被noindex、无重定向循环,四项都满足才算通过。任何一项不满足,先定位原因再改,不要直接删页面或改链接。
情况一:返回301不一定是坏事。如果文章换了固定链接,301到新地址是正确做法。但如果301链经过两跳以上,或者指向了首页而不是对应文章,就属于访问状态问题。
情况二:返回200也可能是软404。服务器对不存在的文章返回200,页面却写着“内容不存在”,抓取工具会把它当成正常页面收录。检查时要看正文,不能只看状态码。
情况三:CDN缓存会掩盖源站错误。源站已经500,CDN仍返回缓存的200。排查时要在请求中带上绕过缓存的参数,或直接请求源站地址,才能看到真实状态。
如果你修复了访问状态,想比较修复前后的抓取或流量变化,不能只看一两天的数据。搜索需求本身有季节波动,节假日和行业周期都会影响表现;数据采集也有延迟,当天改动未必当天反映。合理的做法是记录改动日期,观察一段完整周期,并同时对照未改动的同类文章作为参照,避免把正常波动当成修复效果。
下一步,挑出你博客里流量最高的十篇文章,按上面的四步逐篇检查状态码、正文、noindex标记和重定向链路,把异常项列成清单,再决定是逐篇手动修还是写批量脚本处理。