- 内容频繁更新:如新闻、博客、论坛,每次修改文章后都需要重新生成,非常麻烦。
- 测试环境:在开发或测试阶段,需要实时看到修改效果,而不想等待生成。
- 特定页面:只希望某些页面(如搜索结果页、会员中心)是动态的。
下面我将从简单设置到深度修改,为你提供几种实现方法,并详细解释其原理和优缺点。

最简单的方法 - 修改栏目设置(推荐用于单个栏目)
这是最直接、最常用的方法,适用于你希望某个特定栏目下的所有文章都不生成HTML。
操作步骤:
- 登录织梦后台。
- 进入【核心】 -> 【栏目管理】。
- 找到你想要设置为“动态”的那个栏目,点击【修改】。
- 在栏目修改页面,找到 “列表选项” 或 “高级选项” 标签页(不同版本位置可能略有不同)。
- 找到 “列表生成选项” 或 “栏目设置” 中的 “选择列表页模板”。
- 在该选项的旁边,通常会有一个复选框,叫做 “使用动态页” 或 “不生成HTML”。
- 勾选这个复选框。
- 点击【确定】保存。
效果:
- 该栏目下的文章列表页将变为动态页面,
plus/list.php?tid=1。 - 该栏目下的文章内容页也将变为动态页面,
plus/view.php?aid=123。
优点:

- 操作简单,无需修改代码。
- 可以针对特定栏目进行设置,不影响其他栏目。
缺点:
- 只能按栏目设置,无法针对单篇文章进行设置。
全局设置 - 修改 arc.archives.class.php 文件(用于所有文章)
如果你希望整个网站的所有文章都变成动态页面,可以从代码层面进行修改,这是最彻底的方法。
核心原理:
织梦生成HTML的核心逻辑在于 arc.archives.class.php 文件中的 MakeHtml() 方法,我们通过修改这个方法,让它“跳过”生成HTML文件的步骤。
操作步骤:

-
备份文件! 在进行任何代码修改前,请务必备份原始文件,文件路径为:
/include/arc.archives.class.php -
打开并编辑文件:使用代码编辑器(如 VS Code, Sublime Text, Notepad++)打开
arc.archives.class.php。 -
定位关键代码:在文件中找到
MakeHtml()函数,这个函数是处理文章生成的总入口。 -
修改代码:在
MakeHtml()函数的开头部分,添加一个return true;语句,让函数直接返回成功,而不再执行后续的生成HTML代码。找到类似这样的代码块:
function MakeHtml() { // ... 一些变量初始化和判断 ... // 这是生成文章内容HTML的核心代码 $this->SaveToHtml(); // 生成静态文件 // ... 生成其他相关文件 ... return $this->Field['arcid']; }修改为:
function MakeHtml() { // 直接返回,跳过所有HTML生成步骤 // 这样,文章就只存在于数据库中,通过动态页面访问 return $this->Field['arcid']; } -
保存文件。
效果:
- 之后,你在后台发布或修改任何文章,织梦都不会再生成
.html文件。 - 所有文章内容页将通过动态链接访问,
plus/view.php?aid=XXX。
优点:
- 一劳永逸,影响全站。
- 代码修改简单,只需一行。
缺点:
- 影响范围是全局的,无法针对特定栏目或文章。
- 如果你的网站已经上线并有很多静态页面,会导致新旧页面并存(静态
.html和动态plus/view.php),不利于SEO(搜索引擎会看到两个内容相同的页面)。
针对单篇文章的修改(进阶)
如果你只想让某几篇文章不生成HTML,而栏目设置又无法满足,可以采用这种“曲线救国”的方法。
操作步骤:
-
备份文件:同样,备份
arc.archives.class.php。 -
编辑文件:打开
/include/arc.archives.class.php。 -
添加判断条件:在
MakeHtml()函数中,添加一个判断逻辑,如果文章ID(this->ArcID)在你指定的列表中,就跳过生成。修改后的代码示例:
function MakeHtml() { // 定义一个不生成HTML的文章ID数组 $no_html_aid_array = array(123, 456, 789); // 把你不想生成HTML的文章ID放这里 // 如果当前文章ID在这个数组里,就直接返回,不生成HTML if (in_array($this->ArcID, $no_html_aid_array)) { return $this->Field['arcid']; } // --- 以下是原有的生成HTML代码 --- $this->SaveToHtml(); // ... 其他代码 ... return $this->Field['arcid']; } -
保存文件。
效果:
- 只有ID为
123,456,789的文章不会生成HTML,其他文章正常生成。
优点:
- 精确控制,可以指定任意单篇文章。
- 灵活性高。
缺点:
- 每次需要增加或删除不生成HTML的文章时,都需要手动修改代码并上传文件,比较麻烦。
- 同样,需要手动管理文章ID列表。
重要提醒:动态页的SEO和URL美化
当你将网站改为动态访问后,会面临两个常见问题:
- URL不美观:
plus/view.php?aid=123这样的URL既不友好,也不利于SEO。 - 内容重复:如果之前有生成的静态HTML页面,搜索引擎可能会同时收录
article/123.html和plus/view.php?aid=123重复,稀释权重。
解决方案:
-
设置404页面:将不存在的HTML页面(如
article/123.html)重定向到动态页面(plus/view.php?aid=123),这需要配置服务器的.htaccess(Apache) 或web.config(IIS) 文件。- Apache (.htaccess) 示例:
# 将伪静态的HTML请求重定向到动态PHP RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)\.html$ /plus/view.php?aid=$1 [L]这个规则的意思是:如果请求的是一个
.html文件,但这个文件在服务器上实际不存在,就把它重定向到plus/view.php。
- Apache (.htaccess) 示例:
-
使用织梦的“伪静态”功能:织梦内置了伪静态功能,可以将动态URL伪装成静态URL,而不需要生成真实的HTML文件。
- 操作:后台 -> 【系统】 -> 系统基本参数 -> 核心设置 -> 是否使用伪静态 -> 选择“是”。
- 配置URL规则:在【系统】-> 核心设置 -> 栏目目录命名规则 和 文章命名规则 中,设置你想要的伪静态格式,
{typedir}/view-{aid}.html。 - 配置服务器:根据织梦官方文档,配置你的服务器(Apache或Nginx)的伪静态规则,将这种格式的URL正确地转发到
plus/view.php。
这样,你的文章链接会显示为
http://www.yoursite.com/news/view-123.html,但实际访问的是动态页面,完美解决了URL美观和动态访问的问题。
| 方法 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| 栏目设置 | 需要让某个栏目下的所有文章变为动态 | 简单、快速、官方支持 | 无法针对单篇文章 |
| 全局修改代码 | 整个网站都希望改为动态访问 | 彻底、一劳永逸 | 影响全局,新旧URL并存,需处理SEO |
| 单篇文章修改 | 只想让极少数特定文章变为动态 | 精确控制、灵活 | 维护麻烦,需手动修改代码 |
建议流程:
- 新站开发:直接使用方法二全局修改,然后配置好伪静态,从一开始就使用动态+伪静态模式。
- 旧站改造:优先使用方法一,将需要频繁更新的栏目(如新闻)改为动态,对于一些重要的、需要SEO优化的静态页面,保持不变,务必配置好404重定向,避免内容重复。
- 特殊需求:如果只是偶尔有几篇文章不想生成HTML,使用方法三。
