laravel安装后nginx伪静态未配置会导致所有路由(包括/)404、静态资源加载失败、get参数丢失及安全风险,根本原因是请求未进入public/index.php入口,框架未启动。

Laravel 安装后如果 Nginx 伪静态没配好,最直接的表现就是页面大面积 404,连欢迎页都打不开,而不是“路由写错了”或“代码有问题”。根本原因是请求压根没进 Laravel 的入口文件,整个框架都没启动。
首页直接显示 404 或目录列表
因为 root 没指向 public 目录,Nginx 去项目根目录找 index.php,找不到就返回 404;或者开启目录浏览后,直接列出 .env、app/、vendor/ 等敏感文件夹,存在严重安全风险。
所有路由都 404,包括 /login、/admin
这不是你 route/web.php 写得不对,而是 Nginx 根本没把请求转发给 public/index.php。Laravel 路由系统完全没机会运行,所有非物理文件路径(比如 /users)都会被当作不存在处理。
静态资源全部加载失败
css/app.css、js/app.js、logo.png 显示 404,原因有两个:
- 模板里用了相对路径(如 href="css/app.css"),当前 URL 是 /admin/users 时,浏览器会请求 /admin/css/app.css;
- 更关键的是,Nginx 缺少 try_files 规则,连这些真实存在的文件也可能被错误地交给 index.php 处理,导致返回空内容或 500。
访问带参数的链接丢失 $_GET 数据
比如 /search?q=laravel&page=2,页面能打开但 page 参数取不到。这是因为 try_files 写成了 /index.php?/$1 或漏了 $query_string,导致 query string(? 后面的部分)被丢弃。
偶尔跳转到 index.php 或出现 “No input file specified”
常见于 fastcgi_param SCRIPT_FILENAME 配错:用了 $document_root 而不是 $realpath_root,或路径拼接错误(例如写成 /var/www//index.php)。PHP-FPM 找不到脚本,直接报错。











