thinkphp 3.2在nginx下404主因是未正确配置path_info转发:root须指向项目根目录(非public),location /需加if+rewrite规则(rewrite ^(.*)$ /index.php?s=$1 last),且location ~ .php$中必须包含fastcgi_split_path_info、path_info和script_filename三行参数。

ThinkPHP 3.2 在 Nginx 下页面 404,不是代码写错了,而是 Nginx 没把 /Home/Index/index 这类请求交给 index.php 处理。它直接去文件系统找这个路径,找不到就返回 404——框架根本没启动。
关键点在于:TP3.2 默认使用 PATH_INFO 模式(如 index.php/Home/Index/index),而 Nginx 不像 Apache 那样原生支持 .htaccess 和 PATH_INFO 自动解析,必须手动配置转发与参数传递。
✅ 必须检查的三项硬性配置
-
root 指令必须指向项目根目录(不是 public)
TP3.2 入口文件是index.php,位于项目根目录下(如/var/www/myapp/index.php),不是public/。确认 Nginx 的root是:root /var/www/myapp;
-
location / 块中要有重写逻辑(推荐 if + rewrite)
在server { }内、location ~ \.php$之前添加:location / { if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s=$1 last; } }注意:
s=$1是 TP3.2 路由参数的标准接收方式,不能写成?_url=或?$query_string。 -
PHP 处理块中必须补全 PATH_INFO 相关参数
在location ~ \.php$ { ... }块内,确保包含以下三行(顺序不重要,但缺一不可):fastcgi_split_path_info ^(.+\.php)(.*)$; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
⚠️ 如果漏掉
fastcgi_split_path_info,$fastcgi_path_info就为空,$_SERVER['PATH_INFO']拿不到/Home/Index/index,路由自然失效。
? 快速验证是否真为伪静态问题
在浏览器或终端执行:
-
http://your-domain.com/index.php/Home/Index/index→ 应能正常显示 -
http://your-domain.com/Home/Index/index→ 若 404,说明 Nginx 转发失败 -
curl -I http://localhost/index.php→ 返回200 -
curl -I http://localhost/Home/Index/index→ 返回404→ 锁定 Nginx 配置层
? 其他常见干扰项(别跳过)
-
APP_DEBUG 关闭时静默失败:临时打开
APP_DEBUG = true,看是否有更明确报错 -
Runtime 目录权限不足:确保
Runtime/可写(建议755或775) -
URL_MODEL 配置错误:检查
Conf/config.php中:'URL_MODEL' => 2, // PATHINFO 模式(TP3.2 默认)
-
宝塔用户特别注意:
- 不要直接选「伪静态 → ThinkPHP」,那是为 TP5/6 设计的,对 TP3.2 无效;
- 手动粘贴上述
if + rewrite规则,并确认「网站目录」设为项目根目录(非public); - 修改后务必点击「重载配置」或重启 Nginx。
? 补充:如果用了子目录部署(如 http://site.com/myapp/)
需调整 rewrite 规则,显式保留前缀:
location /myapp/ {
if (!-e $request_filename) {
rewrite ^/myapp/(.*)$ /myapp/index.php?s=$1 last;
}
}
同时 root 仍指向网站根目录(如 /var/www/html),入口文件物理路径就是 /var/www/html/myapp/index.php。
不复杂但容易忽略
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











