检查访问状态与错误页,核心是确认三件事:服务器是否正常响应、页面返回的状态码是否正确、错误页是否把问题说清楚。时间和人手有限时,先查首页和主要栏目页的HTTP状态码,再查错误页配置,最后才逐页排查内容问题。下面这份清单按处理优先级排列,每项都说明查什么、怎么查、结果说明什么。
要查的是域名解析是否生效、服务器端口是否可达。在本地终端执行:
ping 你的域名
curl -I -m 10 https://你的域名
第一条看解析出的IP是否与服务器实际IP一致,超时说明解析或网络不通。第二条看能否在10秒内拿到响应头。如果curl返回Could not resolve host,问题在DNS;如果返回Connection timed out,问题在服务器未启动、防火墙拦截或端口未开放。这两类结果指向不同责任方,先定位再决定找谁处理。
要查的是每个重要URL返回的状态码是否为200。用curl批量检查:
curl -o /dev/null -s -w "%{http_code} %{url_effective}\n" -L https://你的域名/
把主要栏目页地址依次替换进去。结果说明:200表示正常;301或302表示发生了跳转,要确认跳转目标是否是期望页面;404表示页面不存在,需要确认是链接写错还是文件被删;500表示服务端程序出错,要去看服务器错误日志;502或504表示后端服务(如PHP、Node进程)没响应或超时。
如果首页返回200但栏目页返回404,说明站点根目录可访问但路由或伪静态规则有问题,优先检查Web服务器配置中的重写规则,而不是先怀疑数据库。
要查的是404和500错误页是否返回正确状态码、是否给用户有效指引。访问一个确定不存在的地址:
curl -I https://你的域名/一个不存在的路径
结果说明:返回404且页面内容包含返回首页或搜索入口,说明错误页配置正确;返回200但内容是错误提示,说明错误页被当成了正常页面,搜索引擎可能把无效地址当成有效内容收录;返回302跳转到首页,说明用了跳转代替错误页,用户和搜索引擎都无法判断原地址已失效,不利于排查。
500错误页通常由服务器默认页接管,检查项是:是否暴露了文件路径、数据库信息或框架版本。如果暴露,应改为自定义错误页,只提示“服务暂时不可用,请稍后重试”。
要查的是页面加载过程中哪些资源请求失败。打开浏览器开发者工具的Network面板,刷新页面,按状态码排序。结果说明:主文档200但CSS或JS返回404,页面会样式错乱或交互失效,这类问题不影响访问状态码,但影响实际可用性;图片返回403,说明文件权限或防盗链设置有问题;接口请求返回500,说明后端逻辑出错,需要看服务端日志。
这一步的适用条件是:curl显示主文档正常,但用户反馈页面显示不正常。此时问题多半在子资源,不在主文档。
如果只有一两个人手,建议把前两步做成一个脚本,每次发布后跑一遍,把状态码非200的URL打印出来。这样不需要逐页点开检查,也能在几分钟内覆盖主要页面。
下一步:把上面curl命令里的域名替换成你的实际域名,先跑首页和三个主要栏目页,记录返回的状态码,再决定从哪一项开始修。