plus/view.php 是 DedeCMS 中用于处理文章内容页显示的核心文件,所谓的“静态化”,就是将这个动态的 PHP 页面,转换成一个独立的 HTML 文件,这样当用户访问时,服务器直接返回 HTML 文件,无需再执行 PHP 查询数据库,从而极大提升访问速度、减轻服务器压力,并有利于搜索引擎抓取。

静态化的原理
DedeCMS 的静态化机制主要依赖于以下两个核心部分:
- 伪静态 (URL Rewriting):这是实现静态化的基础,它通过服务器配置(如 Apache 的
.htaccess或 Nginx 的rewrite规则),将一个看起来像静态文件的 URL(如/article/1.html)映射到实际的动态脚本(如/plus/view.php?aid=1),用户看到的是静态 URL,但服务器内部仍然在执行view.php。 - 生成真实静态文件:当用户通过伪静态 URL 第一次访问文章时,
view.php脚本在渲染完页面内容后,会调用 DedeCMS 的核心函数MakeHtml(),将最终的 HTML 内容保存为一个.html文件到服务器的指定目录(通常是/html/)。 - 后续访问:当有其他用户再次访问
/article/1.html时,服务器会首先检查/html/目录下是否存在这个html文件。- 如果存在:直接将这个 HTML 文件的内容发送给用户,完全不涉及 PHP 执行和数据库查询,速度极快。
- 如果不存在:则再次走伪静态规则,执行
view.php生成新的静态文件,然后再返回。
如何配置和实现静态化
步骤 1:开启伪静态
这是前提,否则你的静态 URL 无法被正确解析。
Apache 服务器 (.htaccess)
确保你的网站根目录下有 .htaccess 文件,并包含以下内容(这是 DedeCMS 默认的规则):

<IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^(.*)/index\.html$ $1/index\.php [L] RewriteRule ^(.*)/list([0-9]+)\.html$ $1/list\.php?tid=$2 [L] RewriteRule ^(.*)/list([0-9]+)-([0-9]+)\.html$ $1/list\.php?tid=$2&PageNo=$3 [L] RewriteRule ^(.*)/view-([0-9]+)-([0-9]+)\.html$ $1/view\.php?aid=$2&pageno=$3 [L] RewriteRule ^(.*)/view-([0-9]+)\.html$ $1/view\.php?aid=$2 [L] </IfModule>
Nginx 服务器 (在虚拟主机配置中)
在你的 Nginx 配置文件(如 nginx.conf 或站点配置文件)中添加以下 rewrite 规则:
location / {
if (!-e $request_filename) {
rewrite "^/([a-z0-9]+)/list-([0-9]+)\.html$" /plus/list.php?tid=$2 last;
rewrite "^/([a-z0-9]+)/list-([0-9]+)-([0-9]+)\.html$" /plus/list.php?tid=$2&PageNo=$3 last;
rewrite "^/([a-z0-9]+)/view-([0-9]+)\.html$" /plus/view.php?aid=$2 last;
rewrite "^/([a-z0-9]+)/view-([0-9]+)-([0-9]+)\.html$" /plus/view.php?aid=$2&pageno=$3 last;
}
}
注意:Nginx 规则可能因 DedeCMS 版本和自定义规则而有所不同,请根据实际情况调整。
步骤 2:在 DedeCMS 后台设置静态化参数
登录你的 DedeCMS 后台,进入 [系统] -> [系统基本参数] -> [核心设置]。
你需要修改以下几个关键选项:
- IsHtml:设置为
Y(是),这是开启全站静态化的总开关。 - 默认文档类型:选择
html。 - 文件命名规则:
- 文章命名规则:这是决定文章 URL 格式的关键,DedeCMS 提供了默认规则,你也可以自定义。
- 默认规则可能是
{typedir}/{Y}/{M}{D}/{aid}.html,这会生成类似/html/2025/10/15/1.html的路径。 - 如果想生成
/article/1.html这样的短路径,可以修改为{cmspath}/article/{aid}.html。注意:使用这种短路径规则,你需要确保/article/目录存在并且有写入权限。
- 文档HTML默认保存目录:通常保持默认的
/html/即可,确保这个目录存在并且 Web 服务器(如 Apache 的www-data或 Nginx 的nginx用户)对其有写入权限。 - (可选) 生成目录默认主页:可以设置为
index.html,这样每个分类目录都会生成一个静态首页。
步骤 3:生成静态文件
设置完成后,你需要手动生成已有的文章静态化。
- 一键生成:进入 [主页] -> [一键更新网站]。
- 选择生成项:在左侧菜单中,勾选 “HTML更新”。
- 生成范围:
- 仅更新主页:生成首页。
- 更新所有栏目页:生成所有列表页。
- 更新所有文档页:这是最关键的一步,它会遍历所有文章,调用
plus/view.php为每一篇文章生成一个.html文件。 - 更新所有专题页:如果有专题,也一并生成。
- 开始执行:点击“开始更新”按钮,等待脚本执行完成,这个过程可能会比较耗时,特别是对于文章数量多的网站。
完成以上步骤后,你的网站文章页就已经成功静态化了,当你访问文章时,URL 会是 你的域名/view-1.html,并且服务器会直接返回 /html/1.html 的内容。
plus/view.php 在静态化中的角色
理解 view.php 的作用至关重要:
- 动态页面渲染器:当静态文件不存在时,
view.php负责接收aid(文章ID) 参数,从数据库中查询文章内容、栏目信息、相关文章等数据。 - 模板引擎:它加载文章内容页的模板(默认是
/templets/default/article_article.htm),将查询到的数据填充到模板中,生成最终的 HTML 字符串。 - 静态文件生成器:在生成完 HTML 字符串后,它会调用
require_once(DEDEINC."/arc.archives.class.php");中的Archives类,该类中的MakeHtml()方法负责将 HTML 字符串写入到你在后台配置的目录中,形成最终的.html文件。
view.php 是静态化流程中的“生产者”,它只在需要生成或更新静态文件时被调用。
高级技巧与注意事项
-
更新机制:
- 当你修改或发布一篇新文章时,DedeCMS 后台通常会自动调用
view.php为该文章生成或更新对应的静态文件。 - 但在批量更新时,使用“一键更新网站”是最可靠的方式。
- 当你修改或发布一篇新文章时,DedeCMS 后台通常会自动调用
-
权限问题:
- 这是最常见的问题。
/html/目录或其子目录没有写入权限,view.php就无法生成静态文件,导致用户访问时页面为空或显示 PHP 错误。 - 解决方案:将
/html/目录及其所有子目录和文件的权限设置为755(目录) 和644(文件),并确保其所有者为 Web 服务器运行用户。
- 这是最常见的问题。
-
伪静态与真实静态:
- 伪静态:URL 像 HTML,但服务器内部仍是动态执行,对 SEO 有好处,但对服务器性能没有提升。
- 真实静态:URL 是 HTML,服务器直接读取文件,对 SEO 和性能都有巨大好处。
- DedeCMS 的方式是 “伪静态 URL + 真实静态文件” 的结合,是最佳实践。
-
插件与自定义开发:
如果安装了某些插件或进行了二次开发,这些插件可能会在文章内容页动态加载内容(如 AJAX 加载评论、广告等),这会导致即使生成了静态文件,页面仍然需要执行 JavaScript 和 PHP,破坏了静态化的优势,需要检查并优化这类插件。
-
服务器缓存:
- 在已经静态化的基础上,再开启服务器级别的缓存(如 Nginx 的
proxy_cache或 Varnish),可以进一步提升高并发下的访问速度。
- 在已经静态化的基础上,再开启服务器级别的缓存(如 Nginx 的
通过以上步骤和配置,你就可以成功地将 DedeCMS 的 plus/view.php 文件所展示的内容页进行静态化,从而获得显著的性能提升和 SEO 优化效果。
