ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Nginx 页面显示 404,但状态码不一定是 404:排查方法与常见误区

Nginx 页面显示 404,但状态码不一定是 404:排查方法与常见误区 Nginx 页面显示 404但状态码不一定是 404排查方法与常见误区配置网站时有时浏览器明明显示“404 Not Found”使用检测工具查看却发现返回的是200或403。这是因为页面显示的文字和服务器返回的 HTTP 状态码并不是一回事。一、先检查真实状态码可以使用下面的命令curl-Ihttps://example.com/也可以只输出状态码curl-sS-o/dev/null\-w状态码%{http_code}\n\https://example.com/常见状态码包括200页面正常返回301/302页面发生跳转403服务器拒绝访问404页面不存在500/502/504服务器或上游程序异常二、为什么显示404却返回200下面的 HTML 只是让页面看起来像404htmlheadtitle404 Not Found/title/headbodyh1404 Not Found/h1/body/html如果服务器正常输出这段内容HTTP状态码仍可能是200。搜索引擎和监控程序通常会优先判断真实状态码而不是只看页面文字。Nginx需要返回真正的404时可以使用location /test { return 404; }自定义404页面可以这样配置error_page 404 /404.html; location /404.html { internal; }修改配置后应先检查语法nginx-t确认没有错误再重新加载nginx-sreload三、为什么状态码很重要错误的状态码可能产生以下影响不存在的页面返回200可能被搜索引擎判断为“软404”正常页面返回403会导致用户和搜索引擎无法访问监控系统可能把错误页面误判为正常CDN可能缓存错误内容API调用程序无法正确判断请求结果。四、查看Nginx访问日志宝塔面板的网站日志一般位于/www/wwwlogs/查看最近100条记录tail-n100/www/wwwlogs/example.com.log日志中的状态码通常位于请求信息后面例如192.0.2.1 - - [28/Sep/2026:10:20:30 0800] GET /test HTTP/2.0 404 146其中的404就是服务器真实返回的状态码。总结页面上的“404”只是一段可见文字HTTP状态码才是服务器向浏览器、搜索引擎和监控程序传递的真实结果。排查网站访问问题时建议先用curl查看响应状态再检查Nginx配置、程序路由和访问日志不要只根据浏览器显示的内容判断。
返回列表