织梦搬家静态页面需要重新生成吗

这是织梦搬家后最常被问的问题之一:明明把整个站点都打包搬过去了,静态 HTML 也在 /a/html 目录里,那到底还要不要重新生成?答案是"看情况",需要根据域名、路径、伪静态配置三个维度判断。

一、什么情况下可以不重新生成

1. 域名未变 + 静态目录未变

如果只是换服务器 IP,域名和站点根目录路径都保持一致,例如原站点 www.example.com/a/2024/01/01.html,新站点也是同样 URL,那么静态页里的内部链接、图片地址、栏目导航都是相对路径或与原域名一致,无需重新生成。

2. 静态页面已使用相对路径

检查任意一篇静态 HTML 源码,如果图片是 /uploads/...、栏目链接是 /news/ 这种相对路径,跨服务器只要目录结构不变,就能直接访问。

二、什么情况下必须重新生成

1. 域名发生变化

old.com 迁到 new.com,静态页里写死的 http://old.com/uploads/... 会全部失效,必须重新生成。生成前先在后台改"站点根网址"为新域名。

2. 站点安装路径变化

原站点装在 /var/www/html/dedecms,新站点装在 /var/www/html,静态页里的相对路径会错位(多一层或少一层),需要重新生成。

3. 改了伪静态/SEO 链接格式

把动态改成伪静态、或调整了栏目 URL 规则,所有静态页里的"上一篇/下一篇/相关推荐"链接都需要重新生成才能更新。

4. 改了模板或站点参数

模板修改、友情链接更换、广告位调整、站点标题/关键词变化,都要重新生成静态页才能让前台体现出来。

三、重新生成操作步骤

1. 改好后台参数

系统 → 系统基本参数:站点根网址、网页主页链接、CMS 安装目录都改对。

2. 一次生成全部

后台 → 生成 → 一键更新网站 → 选择"更新所有" → 开始更新。

3. 分栏目更新(大站推荐)

生成 → 栏目 HTML → 选择单个栏目 → 设置起始 ID → 生成。每次生成 1000 篇,避免超时。

4. 命令行生成(最大站)

cd /www/wwwroot/域名
php makehtml_all.php

或在 PHP 中执行:

php -r "require 'include/common.inc.php'; require 'dede/makehtml_all.php';"
提速技巧:大站生成时把 php.ini 的 max_execution_time 改为 0、memory_limit 改为 512M,避免中途被掐断。

四、如何验证是否需要重新生成

1. 用浏览器打开任意一篇静态页,按 F12 查看源码,搜索旧域名或旧路径,能搜到就必须重新生成。

2. 点击栏目导航、上一篇、相关推荐等内部链接,如果 404 或跳错,说明静态页里的链接已过期。

3. 查看首页右下角"最后更新时间",如果不等于搬家时间,说明首页仍是旧静态。

五、注意事项

1. 重新生成前清空 /data/cache//a/(或 /html/)旧文件,避免新旧混淆。

2. 大站分批生成时,记录每次的起始 ID,避免重复生成浪费时间。

3. 生成完成后查看 Nginx/Apache 访问日志,确认 200 状态码占绝大多数,没有大量 404。

4. 如果是 HTTPS 站点,记得把模板里的 http:// 全部改成 https://,否则混合内容警告。

风险提醒:重新生成前一定要备份 /a/html 目录,万一新模板有错,可以快速回滚老静态页。

判断织梦搬家后是否需要重新生成静态页,关键是看"域名、路径、模板"三要素有没有变。三样都没变,可以直接复用老静态文件;任意一样变了,就必须重新跑一次生成。建议把"一键更新网站"列入搬家 SOP 标准流程,无论是否必要都做一次,能让前台与后台配置完全一致,是最稳妥的做法。完成后用日志工具核对一次 404 比例,确保用户访问无死角。