需Nginx重写+框架路由+后缀配置三者协同:Nginx用try_files转发.html请求至index.php;TP5.1开启url_route_on、设url_html_suffix=>'.html'及pathinfo_depr=>'/';确保public为根目录、HTTPS透传正确。

ThinkPHP 5.1 实现伪 HTML 链接(如 /article/123.html)需要服务器重写 + 框架路由 + 后缀配置三者协同,缺一不可。关键不是让 URL 看起来像 HTML,而是让框架能正确解析带 .html 的路径,并交由对应控制器方法处理。
一、Nginx 配置支持 .html 后缀的重写规则
Nginx 不识别后缀语义,需确保所有以 .html 结尾但非真实文件的请求,仍转发给 index.php 处理:
- 在站点
server块的location /中使用try_files,兼容静态资源与伪静态:
try_files $uri $uri/ /index.php?s=$uri&$args;
}
- 该规则会先检查
/article/123.html是否为真实文件或目录;不存在时,自动转给index.php?s=/article/123.html,TP5.1 路由层可据此提取模块/控制器/操作 - 无需额外匹配
.html后缀——只要路径最终进入index.php?s=...,框架就能处理 - 若用
if (!-e $request_filename)方式,也必须保证重写目标含完整s=参数,例如:rewrite ^/(.*)\.html$ /index.php?s=/$1 last;(仅当强制要求只匹配 .html 时才加此限定)
二、ThinkPHP 层启用 HTML 后缀并开启路由
修改 config/app.php:
把任意文章或文档内容转换成精美的全屏翻页 HTML 演示文件(幻灯片风格)。当用户发来一篇文章、文档链接、Markdown 内容、或粘贴的文本,并且希望生成演示用的 HTML 时触发。支持任意内容来源:iWiki 链接、KM 链接、本地文件路径、直接粘贴的文本。生成的 HTML 文件保存到本地工作区,并通过企微直接发送给用户。触发词示例:帮我把这篇文章做成PPT、转成演示文档、生成HTML幻灯片、做个演示、转成可以演示的格式、article to deck、make a slide。
-
'url_html_suffix' => '.html':启用 .html 后缀,生成链接时自动追加(如
url('article/read', ['id'=>123])输出/article/read/123.html) - 'url_route_on' => true:必须开启,否则不走路由,无法解析伪静态路径
-
'pathinfo_depr' => '/':与 URL 中的分隔符一致,确保
/article/read/123能正确拆解为模块/控制器/操作 - 若需多后缀支持(如 .shtml 或 .xml),可设为
'url_html_suffix' => 'html|shtml|xml'
三、验证与常见问题
配置生效后,访问 https://yourdomain.com/article/index.html 应正常加载 Article 控制器的 index 方法。若失败,重点排查:
立即学习“PHP免费学习笔记(深入)”;
- URL 访问的是
public/目录(非整个项目根目录),且 Nginx 的root指向正确 - PHP 处理块中
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;已设置,避免 HTTPS 下出现 “Primary script unknown” - 未在反向代理或 CDN 后遗漏
$_SERVER['HTTPS']或HTTP_X_FORWARDED_PROTO透传,否则生成的跳转链接可能仍是 http://,触发混合内容警告 - 浏览器地址栏输入带 .html 的 URL 返回 404,说明重写未命中——检查 Nginx 配置是否已重载,且规则位于
listen 443 ssl的 server 块内(HTTPS 站点)


















