首选宝塔内置“ThinkPHP 6”伪静态模板,自动适配PATHINFO模式;若需手动配置,须确保入口路径为/public/index.php、运行目录设为/public、重写末尾用last,并验证PHP函数启用与Nginx重载。

直接选宝塔内置的「ThinkPHP 6」模板最稳妥,它会自动生成适配 PATHINFO 模式的规则;若不生效或部署结构特殊(如子目录、多应用),就得手动配置,并重点检查运行目录、PATH_INFO 透传和 Nginx 重载三个环节。
优先用内置模板:选对名称再保存
进入「网站」→ 找到你的站点 →「设置」→「伪静态」选项卡 → 下拉菜单中**必须选择“ThinkPHP 6”**(不是“ThinkPHP”,那是给 TP5 的)→ 点击「保存」。宝塔会自动写入标准规则:
if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s=$1 last; }
该规则默认适配 TP6.1 的 url_model = 2(PATHINFO 模式),无需额外修改。
立即学习“PHP免费学习笔记(深入)”;
手动配置时三处不能错
如果下拉菜单没有“ThinkPHP 6”,或你把项目放在子目录(如 /myapp/)、用了多应用(如 /admin/),需手动粘贴并校准:
- 入口路径要带 /public/:TP6.1 入口强制在 /public/index.php,所以规则应为:
rewrite ^(.*)$ /public/index.php?s=$1 last; - 运行目录必须设为 /public:进「网站目录」→「运行目录」选 /public(注意开头斜杠),点保存
- 规则末尾只能是 last:不能写 break 或 redirect,否则重写后不进 PHP 处理流程
验证和排障关键点
光点保存不行,必须实测+检查底层支持:
- 访问 https://yourdomain.com/index/test(不带 index.php)能正常输出 → 伪静态已生效
- 返回 404 或提示 URL pathinfo not supported → 检查:
– PHP 禁用函数里是否勾选了 putenv、ini_set、scandir(需全部删掉)
– PHP-FPM 配置中 fastcgi_param PATH_INFO $fastcgi_path_info; 是否启用(宝塔默认有,但升级后可能被重置)
– 终端执行 nginx -t && service nginx reload 强制重载,避免面板缓存导致假成功
多应用或子目录要加正则捕获
比如站点部署在 /admin/ 下,或项目含多个应用(home、api、admin),单行规则无法识别应用前缀,需用两段式重写:
if(!-e $request_filename) {
rewrite ^/([a-z0-9A-Z_\-]+)/(.*)$ /public/index.php?s=$1/$2 last;
rewrite ^/(.*)$ /public/index.php?s=$1 last;
}
第一行提取应用名(如 /admin/login → s=admin/login),第二行兜底处理公共资源请求。



















