讲师中心 微信公众号
AI工具推荐 视频效率加速

ThinkPHP6.0配置伪静态后Nginx报404怎么解决

大婷吖_7454

大婷吖_7454

发布时间:2026-10-02 14:34:16

|

228人浏览过

|

来源于php中文网

原创

Nginx伪静态404核心原因是请求未进入ThinkPHP6框架,需确保root指向public、location/中配置try_files转发、fastcgi_param使用$document_root,并正确传递PATH_INFO;宝塔用户须禁用默认伪静态模板并重启服务。

thinkphp6.0配置伪静态后nginx报404怎么解决

ThinkPHP 6.0 配置伪静态后 Nginx 报 404,核心问题不是路由写错了,而是请求根本没进框架——Nginx 在文件系统里找 /user/login 这样的路径,找不到就直接返回原生 404,public/index.php 压根没执行。

要解决,必须让所有非真实静态资源的请求,全部转发到 public/index.php,并确保 PHP 层能正确拿到路径信息(如 PATH_INFO)。


✅ 确认问题是否出在 Nginx 层

先做这个验证,别急着改配置:

  • 访问 http://your-domain.com/index.php/s=/user/login → 能打开?说明框架和控制器没问题
  • 访问 http://your-domain.com/user/login → 404?说明 Nginx 没把请求转给 index.php
  • 访问 http://your-domain.com/index.php/route/test(一个不存在的路由)→ 出现 ThinkPHP 的「Route not found」页面?说明框架已接管;如果出现 Nginx 默认 404 页面,且响应头没有 X-Powered-By: ThinkPHP,那就确认是 Nginx 配置问题。

✅ Nginx 配置三处硬性要求(缺一不可)

root 必须指向 public 目录

不能是项目根目录(如 /var/www/myapp),必须是:

立即学习“PHP免费学习笔记(深入)”;

root /var/www/myapp/public;

location / 块必须含 try_files 转发规则

放在 server { ... } 内,且必须在 location ~ \.php$ 块之前:

location / {
    try_files $uri $uri/ /index.php?$query_string;
}

注意:TP6 入口在 public/,所以这里 /index.php 是对的(因为 root 已设为 public 目录)。若你没改 root,而是用子目录部署(如 example.com/tp6/),则要写成 /tp6/public/index.php?$query_string。

fastcgi_param SCRIPT_FILENAME 必须用 $document_root

在 location ~ \.php$ 块中,确保有:

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

禁用 $request_filename —— 它在重写后可能指向错误路径,导致静默失败。


✅ PATH_INFO 必须正确传递(TP6 路由依赖它)

即使请求进了 index.php,如果 $_SERVER['PATH_INFO'] 是空的,TP6 就无法解析 /user/login 这段路径。

检查以下两点:

btpanel phpsite 宝塔面板PHP网站
btpanel phpsite 宝塔面板PHP网站

宝塔面板 PHP 网站管理:站点创建、删除、启停、PHP 版本切换、域名管理、SSL证书管理、伪静态管理、数据库管理

下载
  • location ~ \.php$ 块中不能有这行(宝塔默认 74.conf 常见):

    # try_files $uri =404; ← 必须注释或删除!它会提前截断 pathinfo 请求
  • 确保有 PATH_INFO 分离配置(推荐):

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        # 其他 fastcgi_param ...
    }

测试方法:在 public/index.php 开头加一行:

var_dump($_SERVER['PATH_INFO']); die();

访问 /user/login,应输出字符串 /user/login,不是空、不是 /index.php、也不是 NULL。


✅ 宝塔用户特别注意

  • 别点「伪静态 → ThinkPHP」模板,那是 TP5 风格,对 TP6 无效;

  • 进「网站 → 设置 → 伪静态」,清空内容,粘贴:

    if (!-e $request_filename) {
        rewrite ^(.*)$ /index.php/$1 last;
    }

    (前提是你的站点运行目录已设为 /public)

  • 进「配置文件」,确认 include enable-php.conf; 上方已手动加了 fastcgi_param PATH_INFO $fastcgi_path_info;,且 try_files $uri =404; 已被注释。

  • 改完后,必须彻底重启 Nginx + 重启 PHP-FPM(不是“重载配置”)。


✅ 其他易忽略点

  • 禁用 error_page 404:检查配置中是否有 error_page 404 /404.html;,删掉或注释,否则 TP6 的 Route::miss() 根本没机会执行;
  • 静态资源被误拦截:开启 'url_route_must' => true 后,/static/css/app.css 也会走路由。在 route/app.php 顶部加放行规则:
    Route::rule(':path^.*\.(js|css|png|jpg|gif|svg|woff2|ttf)$', 'static/');
  • 权限问题:PHP-FPM 进程用户(如 www)必须有读取 public/index.php 的权限,否则静默失败(页面空白或 404);
  • 路由缓存:APP_DEBUG = false 时,路由会被缓存。改了路由文件后,删掉 runtime/route/ 整个目录。

不复杂但容易忽略

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

相关专题

更多
nginx 重启
nginx 重启

nginx重启对于网站的运维来说是非常重要的,根据不同的需求,可以选择简单重启、平滑重启或定时重启等方式。本专题为大家提供nginx重启的相关的文章、下载、课程内容,供大家免费下载体验。

383

2023.07.27

nginx 配置详解
nginx 配置详解

Nginx的配置是指设置和调整Nginx服务器的行为和功能的过程。通过配置文件,可以定义虚拟主机、HTTP请求处理、反向代理、缓存和负载均衡等功能。Nginx的配置语法简洁而强大,允许管理员根据自己的需要进行灵活的调整。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

3187

2023.08.04

nginx配置详解
nginx配置详解

NGINX与其他服务类似,因为它具有以特定格式编写的基于文本的配置文件。本专题为大家提供nginx配置相关的文章,大家可以免费学习。

5845

2023.08.04

tomcat和nginx有哪些区别
tomcat和nginx有哪些区别

tomcat和nginx的区别:1、应用领域;2、性能;3、功能;4、配置;5、安全性;6、扩展性;7、部署复杂性;8、社区支持;9、成本;10、日志管理。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

561

2024.02.23

nginx报404怎么解决
nginx报404怎么解决

当访问 nginx 网页服务器时遇到 404 错误,表明服务器无法找到请求资源,可以通过以下步骤解决:1. 检查文件是否存在且路径正确;2. 检查文件权限并更改为 644 或 755;3. 检查 nginx 配置,确保根目录设置正确、没有冲突配置等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1476

2024.07.09

Nginx报404错误解决方法
Nginx报404错误解决方法

解决方法:只需要加上这段配置:try_files $uri $uri/ /index.html;即可。想了解更多Nginx的相关内容,可以阅读本专题下面的文章。

3918

2024.08.07

nginx部署php项目教程汇总
nginx部署php项目教程汇总

本专题整合了nginx部署php项目教程汇总,阅读专题下面的文章了解更多详细内容。

122

2026.01.13

nginx配置文件详细教程
nginx配置文件详细教程

本专题整合了nginx配置文件相关教程详细汇总,阅读专题下面的文章了解更多详细内容。

437

2026.01.13

LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

20

2026.09.30

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn