发布于2026-07-11 阅读(0)
扫一扫,手机访问
先说一个基本判断:宝塔Linux面板是目前国内使用最广的 Linux 服务器可视化管理工具,支持一键 LAMP/LNMP、网站/FTP/数据库/Ja va 等上百项功能,安全防护、资源监控、文件管理、软件商店都整合得很好。官方最新正式版是 11.7.0。

需要澄清一下:市场上不存在所谓叫“FastPanel”的官方产品。如果你看到有人提“FastPanel”,大概率是误传、第三方魔改版,或者把 FastAdmin(一个基于 ThinkPHP 的后台框架)和宝塔面板搞混了。所以,所有关于 ThinkPHP 的伪静态配置,归根结底还是在宝塔面板的「网站设置 → 伪静态」里完成。
宝塔内置那个 thinkphp 伪静态模板,默认生成的规则是 PATHINFO 模式:if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s=$1 last; }。这套规则对 ThinkPHP 5/6 默认开启 url_pathinfo 且没改 URL_MODEL 的场景是 ok 的。但问题在于,下面几种情况直接套模板就会翻车:
route_url_convert 或自定义了 url_domain_deployhttps://example.com/admin/),而规则里没考虑子目录前缀addon_url 生成的 /mydemo/test/myname.html),但规则没兼容 .html 后缀这时候,最稳的做法是手动替换成 try_files 写法:
location / {
try_files $uri $uri/ /index.php?s=$uri&$args;
}
注意一个小细节:这里用 $uri 而不是 $request_uri,目的是避免出现双问号;&$args 保证 GET 参数不会丢失。
规则保存完、Nginx 重载后依然 404,别急着改规则。大概率是请求根本没到 PHP 层。几个常见的“断裂点”:
index.php 文件权限设成了 600,Nginx 用户读不到 —— 改成 644APP_DEBUG 关了,同时 route_check 没开,导致路由根本没注册 —— 去 config/route.php 检查一下是否 return 了完整的路由数组快速验证的方式也很简单:直接访问 https://yoursite.com/index.php?s=admin/index/login,如果能正常进后台,那说明 PHP 和框架层面没问题,问题就出在伪静态转发这一层。
FastAdmin 的插件(比如 mydemo)通过 addon_url() 生成的链接格式是 /mydemo/test/myname.html。但宝塔默认规则只匹配 /index.php?s=xxx,对 .html 后缀的路径完全不处理。需要手动在原有 location 块里追加一条:
location ~ \.html$ {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=$1 last;
}
}
更推荐的做法是合并进主 location,统一用命名 location 转发:
location / {
try_files $uri $uri/ @rewrite;
}
location @rewrite {
rewrite ^(.*)$ /index.php?s=$1 last;
}
这样,不管是 /admin 还是 /mydemo/test.html 都会被捕获到 index.php,接着由 ThinkPHP 路由解析。
最后提醒一点:FastAdmin 插件伪静态能不能正常工作,关键在于 PHP 层的配合——url_html_suffix 配置和 addon_url 函数调用方式。如果插件 config.php 里 'url_html_suffix' => 'html' 没启用,或者生成链接时用的是硬编码 URL 而不是 addon_url('mydemo/index/index'),那 Nginx 规则再全也没用。这往往是容易被忽略的断层点。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8