如何解决Nginx中的404 Not Found错误?伪静态、路径、配置全排查
Nginx环境下网站404是常见问题,尤其是伪静态配置错误。下面是完整排查方案。
404错误的含义。404 Not Found表示服务器找不到请求的资源。可能是文件真的不存在,也可能是URL重写规则错误导致Nginx没找到对应文件。
场景一,首页正常内页404。这是最常见的,原因是伪静态配置错误。PbootCMS、WordPress等CMS的URL是伪静态(如/about.html),实际不存在这个文件,需要Nginx重写到index.php。修复:宝塔-网站-设置-伪静态,选对应CMS的规则。PbootCMS规则: ``` location / { if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s=$1 last; } } ``` WordPress规则: ``` location / { try_files $uri $uri/ /index.php?$args; } ``` 织梦静态化不需要伪静态(真实HTML文件),但动态页需要。选对规则保存,Nginx自动reload,内页就能访问了。
场景二,所有页面都404。1. 根目录设置错:网站设置-网站目录-根目录,路径不对,Nginx找不到index.php。检查根目录是否有网站程序。2. 默认文档错误:默认文档里没有index.php,或index.html在前面且根目录有默认页。网站设置-默认文档,把index.php放最前面。3. 网站文件没上传:根目录是空的或只有默认页,上传网站程序。
场景三,静态资源404(CSS/JS/图片)。1. 路径错误:HTML里引用的CSS/JS路径不对,F12-Network看404的URL,和服务器实际路径对比。2. 大小写问题:Linux区分大小写,Style.css和style.css不同。3. 文件没上传:确认文件存在于服务器对应路径。4. 权限问题:文件644目录755,权限不对Nginx读不到返回403(不是404,但类似)。5. CDN缓存:CDN节点没有该文件,刷新CDN。
场景四,后台404。1. 后台路径错:PbootCMS的admin.php被改名,用新路径访问。2. 后台目录被删除:检查根目录有没有admin.php。3. 伪静态规则把后台路径也重写了:规则里要排除真实文件,PbootCMS的if (!-e $request_filename)会排除存在的文件,admin.php是真实文件不会被重写。如果规则写错了,修正规则。
场景五,安装SSL后404。1. HTTPS的server块配置不完整,443端口的root和伪静态和80端口不一致。检查Nginx配置文件,443 server块要有root、index、伪静态规则。2. 强制跳转配置错误,导致循环或404。3. 证书路径错,Nginx启动失败,网站打不开(可能显示其他站点)。
场景六,子目录安装404。网站装在子目录(如domain.com/cms),伪静态规则要适配。Nginx配置: ``` location /cms/ { if (!-e $request_filename) { rewrite ^/cms/(.*)$ /cms/index.php?s=$1 last; } } ``` PbootCMS后台配置里网站地址要带子目录路径。
场景七,URL末尾斜杠问题。访问domain.com/about(无斜杠)404,domain.com/about/正常。Nginx的try_files或rewrite规则对无斜杠处理不同。修复:加规则自动加斜杠,或确保链接统一带/不带斜杠。
场景八,.htaccess不生效。Apache的.htaccess规则在Nginx下不生效!很多从Apache迁移到Nginx的网站,.htaccess里的伪静态规则没用,必须转成Nginx规则放在配置文件里。宝塔的伪静态功能就是写Nginx规则,用这个。
排查流程。1. 看是所有页面404还是部分页面。2. 首页正常内页404→伪静态问题。3. 静态资源404→路径/文件/大小写问题。4. 所有404→根目录/默认文档/文件问题。5. F12看请求URL和服务器实际文件对比。6. 看Nginx配置文件:cat /www/server/panel/vhost/nginx/域名.conf,检查root、index、location规则。7. 看Nginx错误日志:tail /www/wwwlogs/域名.error.log。
验证方法。1. 改完伪静态后,宝塔会自动reload,手动执行nginx -t确认语法正确。2. 访问内页测试。3. 用curl -I 域名/内页URL看返回码,200正常,404还没好。4. 清浏览器缓存测试。
Nginx 404错误90%是伪静态配置问题,尤其是从Apache迁移或新安装的网站。在宝塔里选对伪静态规则,基本都能解决。

更新时间:2026-08-26 18:10:05
上一篇:如何替换公司网站的图片背景:CSS背景、Banner背景、页面背景全解