thinkphp 在 nginx 上去掉 index.php 后报 404,先比较带入口文件的 url 与短路由。如果 /index.php?s=/news 能访问而 /news 失败,就检查 nginx 是否把动态请求转到入口文件。下面的配置仅适用于已验证支持 s 路由参数的项目。
先确认 PHP 入口和目标路由都能访问
以已经存在的 /news 路由为例,替换示例域名并在测试环境运行。站点根目录应指向项目的 public,已有 PHP-FPM 配置应能处理 index.php。
curl -i 'https://example.test/index.php?s=/news' curl -i 'https://example.test/news'

两条都失败时先检查入口、站点配置和应用路由。第一条成功、第二条失败时再调整转发。
让 Nginx 把动态请求转给 index.php
在当前站点的 server 配置中调整现有 location / 块,保留已经验证可用的 PHP 处理块。
location / {
try_files $uri $uri/ /index.php?s=$uri&$args;
}
前两项让真实文件和目录按站点已有规则处理。兜底分支将路径传给 s,并带上原查询参数。请确认业务 URL 不另用 s 参数,避免参数冲突。
重载后分别检查动态页面和静态文件
配置通过语法检查后再重载。复测短路由、带业务参数的短路由和实际存在的静态资源。
nginx -t && nginx -s reload curl -i 'https://example.test/news?page=2' curl -I 'https://example.test/assets/site.css'
路由应进入应用,静态文件应正常返回。若仍是 404,对照 Nginx 和应用日志判断请求有没有到达入口,再核对实际生效的 server 与 location。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











