ThinkPHP伪静态规则在宝塔面板可视化配置教程【教程】
宝塔面板配置ThinkPHP伪静态规则仍404,需将运行目录设为/public,规则用last而非break,移除PHP禁用的scandir、putenv、ini_set,将规则置于location~.php$之前,重载Nginx并确保fastcgi_paramPATH_INFO生效。
宝塔面板粘贴ThinkPHP伪静态规则仍404,主因是运行目录未设为/public、规则末尾用break而非last、PHP禁用了scandir/putenv/ini_set;必须将if+rewrite规则置于location ~ .php$之前、选下拉菜单中/public、重载Nginx且确保fastcgi_param PATH_INFO $request_uri;生效。

宝塔面板里直接往「伪静态」文本框里粘贴那几行ThinkPHP规则,按理说是个常规操作。但现实是,大多数人粘完之后,页面还是妥妥的404。问题到底出在哪?别急着怀疑规则本身,你遇到的坑,十有八九是下面这三件事没做对:运行目录没改成/public、规则里悄悄用了break而不是last、或者PHP那边把scandir和putenv给禁了。
为什么粘了规则还是404?
很多人以为在宝塔的文本框里粘上规则,点一下保存就万事大吉了。实际上,那几行只是写进了Nginx配置文件,不重载服务就等于没改。更关键的是,ThinkPHP 6的路由解析,是靠着原始请求路径传到$_GET['s']参数来工作的。这个链路一旦被掐断,404就是必然的。链路的三个“卡脖子”环节,咱们得一个一个看:
- 规则位置:那行经典的
if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s=$1 last; },必须放在location ~ .php$块之前。因为PHP文件匹配的优先级更高,规则放后面,Rewrite根本轮不到执行。 lastvsbreak:这是个老生常谈的坑。break会让重写后的请求不再重新匹配location,index.php?s=xxx会被当静态文件直接返回源码或者404。只有last才能保证请求重新进入PHP处理流程。- 运行目录:宝塔默认的站点根目录通常指向项目顶层(比如
/www/wwwroot/myapp),但ThinkPHP 6只允许访问public/目录。解决办法是进入「网站目录」→「运行目录」,从下拉菜单里选/public。千万别手输,也别留空,不然一切白搭。
多应用模式下伪静态怎么写?
单应用的规则 rewrite ^(.*)$ /index.php?s=$1 last; 在处理 /admin/login 这种多应用URL时,直接失效——Nginx会原样返回404,根本不转发给PHP。多应用就得靠正则把第一段路径提取出来,拼进s参数里:
- 正确写法是两段式:
if(!-e $request_filename) { rewrite ^/([a-z0-9A-Z_-]+)/(.*)$ /index.php?s=$1/$2 last; rewrite ^/(.*)$ /index.php?s=$1 last; } - 第一行负责捕获应用名(比如
admin、api),第二行兜底处理首页、静态资源那些没有应用前缀的请求。 - 应用名如果带下划线或中划线,正则字符集里必须补全成
[a-z0-9A-Z_-],否则/user_v2/login这种地址会被漏匹配。 - 光改Nginx规则还不够,还得确认
config/app.php中'app_multi' => true已经开启,并且app/multi.php里明确列出了合法的应用名。
PHP 配置里哪些函数不能禁用?
ThinkPHP 6启动时需要扫描app/、config/目录加载类和配置,同时路由解析强依赖PATH_INFO。下面这三项一旦被拦住,轻则404,重则直接白屏:
scandir:必须从PHP的「禁用函数」列表里删掉。操作入口在宝塔→软件商店→PHP设置→配置修改,搜索disable_functions把它摘出去。putenv和ini_set:TP6启动时需要动态设置环境变量和PATH_INFO,这两函数一旦禁用,系统就会报URL pathinfo not supported错误。- 最关键的一步:进Nginx「配置文件」选项卡,在
location ~ .php($|/)块内部,删掉原有的fastcgi_split_path_info和fastcgi_param PATH_INFO $fastcgi_path_info;,然后补上这行:fastcgi_param PATH_INFO $request_uri;。
最后说一个最容易被忽略的点:规则保存后,必须手动点「重载 Nginx」,光是点「保存」是不够的。如果重载失败,就去看看错误日志——常见原因无外乎if块位置放错、last写成break、或者/public没从下拉菜单里选。把这些死角都扫一遍,404基本就能解决了。
Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。
极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。
















