suffix 配置必须与 enableprettyurl=true 和 showscriptname=false 同时启用,且依赖 web 服务器重写规则支持,用于统一添加 url 后缀(如 .html),影响链接生成与路由解析,但不改变文件扩展名或服务器实际行为。

suffix 配置必须和 enablePrettyUrl 同时启用,且仅影响 URL 生成与解析的后缀部分,不改变实际文件扩展名或服务器行为。
启用 suffix 的前提条件
必须同时满足以下三点,否则 suffix 不生效:
-
enablePrettyUrl设为true -
showScriptName设为false(否则index.php.html这类路径会暴露) - Web 服务器(Apache/Nginx)已正确配置重写规则,能将带后缀的请求转发给
index.php
在 urlManager 中配置 suffix
直接在 components['urlManager'] 配置中添加 suffix 键即可,值为字符串(含点号):
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'suffix' => '.html',
'rules' => [
'about' => 'site/about',
'post/<id:>' => 'post/view',
],
],
</id:>
配置后,Url::to(['post/view', 'id' => 123]) 将生成 /post/123.html;访问 /about.html 也能正确路由到 site/about。
将调研报告、方案对比、数据分析、需求梳理、会议纪要、设计说明、代码评审、学习笔记等任务产物输出为可在浏览器直接打开的单文件 HTML,替代 Markdown 作为最终交付物。Markdown 在信息密度、视觉清晰度和可分享性上已跟不上 AI 产物的丰富度,HTML 能同时承载排版、表格、SVG 等。
Apache 下必须补全 .htaccess 规则
默认的 Yii2 .htaccess 不处理带后缀的请求,需显式允许匹配 .html:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\.html$ index.php?r=$1 [L,QSA]
RewriteRule . index.php [L]
注意顺序:先捕获 .html 并转成无后缀的路由参数,再 fallback 到通用规则。漏掉第一行会导致 /post/123.html 404。
容易被忽略的兼容性细节
suffix 会影响所有由 Url::to() 或 $this->createUrl() 生成的链接,但不会自动修改硬编码的 <a href="/xxx"></a>;更关键的是:
- 如果
rules中某条规则 key 本身带.html(如'help.html' => 'site/help'),它会覆盖全局suffix行为,变成双重后缀 -
enableStrictParsing为true时,/post/123.html必须有对应规则匹配,否则 404 —— 即使suffix已设,也不代表“自动剥离后缀再匹配” - Nginx 用户不能依赖
.htaccess,需在 server 块中显式 rewrite:rewrite ^/(.*)\.html$ /index.php?r=$1 last;
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










