404错误大概率是运行目录或伪静态配置错误:laravel/tp6等框架需设运行目录为/public,伪静态必须选对应模板并含try_files指令,改后须点击“重启”站点而非仅重载配置。

404 错误大概率是运行目录或伪静态没对上,不是代码或服务器挂了。
确认网站运行目录是否指向真实入口
宝塔不会自动猜你的框架入口在哪。Laravel、ThinkPHP6、Next.js(SSR)等都要求运行目录必须设为 /public,否则 Nginx 找不到 index.php 就直接 404;纯 HTML 站点则应留空或设为 /。
- 进【网站】→ 点击站点【设置】→【网站目录】选项卡
- 检查【运行目录】下拉框:Laravel/TP6 必须选
/public;DedeCMS、Z-Blog 应为空或/ - 手动输入也行,但必须以斜杠开头,比如
/subdir/public,不能写成public或./public - 改完立刻点【保存】,不重启服务也会生效(Nginx 的 root 指令是热加载的)
Nginx 伪静态规则是否匹配且已加载
伪静态本质是 URL 重写指令,若规则缺失、语法错位或未启用,Nginx 就不会把请求转发给 PHP 入口,而是当作静态文件去找——找不到就 404。
- 在【网站设置】→【伪静态】选项卡中,务必选择与程序一致的模板,比如 Laravel 选
Laravel,Z-Blog 选Z-Blog - 别信“自动识别”——宝塔不会读你代码,它只按模板硬套;选错模板会导致
location /块缺失try_files行 - 检查生成的规则里是否有这行:
try_files $uri $uri/ /index.php?$query_string;;没有就说明模板没套对 - 保存后必须点【网站】列表页上的【重启】按钮(不是【重载配置】),否则 Nginx 不会重新读取该站点的 server 块
检查 Nginx 配置语法和监听状态
即使目录和伪静态都对,如果 Nginx 进程根本没加载这个 server 块,或者配置里有语法错误,照样 404 —— 而且是全站 404,不单某个路径。
- 终端执行
nginx -t,看输出是否为successful;报错就说明配置文件有括号漏写、分号缺失等问题 - 执行
netstat -tlnp | grep :80(或:443),确认 Nginx 确实在监听对应端口 - 进【软件管理】→ 点 Nginx 右侧【设置】→【配置修改】,重点看
include是否包含该网站的 conf 文件路径,比如/www/server/panel/vhost/nginx/your-site.conf - 如果该 conf 文件被误删或权限为 000,Nginx 启动时会静默跳过,导致站点配置彻底失效
最常被忽略的是:改完运行目录和伪静态后,忘记点【重启】站点。Nginx 不像 Apache 那样 reload 就能生效,它的 server 块是进程启动时一次性加载的,不重启就不会读新配置。











