最省事方式是选宝塔内置“ThinkPHP 6”模板,它自动写入if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s=$1 last; }规则;若无此选项或为多应用/子目录部署,需手动粘贴并确保last结尾、入口路径为/public/index.php、运行目录设为/public,保存后必须重载Nginx。

在宝塔面板里,ThinkPHP 的伪静态规则填写位置很明确:
网站 → 找到你的站点 → 点击「设置」→ 切换到「伪静态」选项卡 → 在文本框中填写或选择规则 → 点击「保存」
这个文本框就是最终写入 Nginx server 块的伪静态配置区域,所有规则都会直接插入到该站点的 Nginx 配置文件中(路径类似 /www/server/panel/vhost/nginx/xxx.conf)。
下面分几种常见情况说明怎么填:
推荐方式:直接选内置模板(适合标准 TP6 单应用)
- 下拉菜单中选择 「ThinkPHP 6」(注意不是“ThinkPHP”,那是给 TP5 的)
- 点击「保存」,宝塔会自动写入规则并重载 Nginx
- 生成的规则是:
if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s=$1 last; }
手动填写(适用于子目录、多应用、或没看到 ThinkPHP 6 选项时)
- 清空文本框原有内容
- 粘贴以下任一正确格式(根据实际路径调整):
- 若运行目录已设为
/public(强烈推荐):if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s=$1 last; } - 若运行目录仍是项目根目录(不推荐,但临时应急):
if (!-e $request_filename) { rewrite ^(.*)$ /public/index.php?s=$1 last; }
- 若运行目录已设为
- 保存后务必点击「重载 Nginx」,或 SSH 执行
nginx -t && service nginx reload
多应用部署(如 /admin/、/api/)需额外处理
- 不能用单行规则,要加正则捕获应用名:
if(!-e $request_filename) { rewrite ^/([a-z0-9A-Z_\-]+)/(.*)$ /index.php?s=$1/$2 last; rewrite ^/(.*)$ /index.php?s=$1 last; } - 注意空格和括号格式,宝塔会原样写入,语法错误会导致重载失败
规则填完不生效?大概率不是这里填错了,而是:
- 运行目录没设成
/public - PHP 禁用了
putenv、ini_set或scandir -
fastcgi_param PATH_INFO没启用或被注释 - 没执行重载,只点了保存
不复杂但容易忽略。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











