检查访问状态与错误页,核心是分别确认“服务器有没有响应”“返回了什么状态码”“页面内容是不是错误页”这三件事。最直接的做法是用浏览器开发者工具看网络请求,再用命令行工具复测同一条URL,最后对照状态码判断问题出在服务器、DNS、程序还是权限配置上。
很多人把“网站打不开”当成一个问题,其实至少分两种现象:
先判断属于哪一种,能省掉大量无效排查。如果连响应都没有,去查页面代码没有意义;如果返回了500,去查DNS同样没有意义。
浏览器地址栏只显示页面,不显示状态码。按F12打开开发者工具,切到“网络”面板,刷新页面,找到第一条文档请求,看“状态”一列:
200:请求成功。如果页面内容仍然异常,问题在页面渲染或数据加载,不在访问状态。301 / 302:发生了跳转。要顺着跳转链看最终落到哪个地址,跳转链过长或跳向错误地址都会导致访问异常。403:服务器理解了请求但拒绝执行,常见于目录权限、防盗链或访问控制规则。404:请求的资源不存在,常见于链接写错、文件被删、伪静态规则不匹配。500 / 502 / 504:服务器内部错误、网关错误或超时,通常要看服务器日志才能定位。注意:状态码是服务器返回的事实,不是猜测。如果开发者工具里显示200,就不要凭页面外观断定“服务器挂了”。
浏览器可能命中缓存,看到的是旧结果。用命令行复测同一条URL,能得到更干净的状态码。以curl为例:
curl -I https://example.com/page
参数-I表示只请求响应头,不下载页面内容。输出里第一行就是状态码。如果要看完整跳转过程,加上-L跟随跳转,再加-v查看详细连接信息。
对比依据很简单:如果命令行返回404而浏览器显示正常,说明浏览器用了缓存;如果命令行连接超时而浏览器能打开,说明本机网络环境或代理设置不同。这一步的作用是确认“你看到的”和“服务器实际返回的”是否一致。
拿到状态码后,处理方向就明确了:
ping或nslookup确认解析结果。如果解析正常但连不上,检查服务器是否运行、端口是否开放、防火墙是否拦截。这里要区分“可能原因”和“已经定位的原因”。看到500只说明服务器内部出错,具体是数据库还是代码,必须看日志才能下结论,不能凭经验直接断言。
处理完问题后,不要只刷新一次浏览器就结束。按同样的顺序复查:
复查的意义在于确认修复是稳定的,而不是碰巧命中缓存或临时恢复。如果状态码反复在200和500之间跳动,说明问题没有真正解决,需要继续查日志。
下一步建议:把这次出现的状态码、请求URL、复测命令和日志时间点记下来,形成一份可对照的记录。下次再出现访问异常时,直接按同样的顺序测一遍,能更快判断是新问题还是旧问题复发。