核心思路
新云ASP和DEDE PHP是两个完全不同的技术栈:

(图片来源网络,侵删)
- 新云ASP: 基于
.asp文件、VBScript脚本、Access或SQL Server数据库。 - DEDE PHP: 基于
.php文件、PHP脚本、MySQL数据库。
转换的核心工作可以分解为以下几个层面:
- 环境转换: 从Windows + ASP + Access/SQL Server 转换到 Linux/Windows + PHP + MySQL。
- 程序转换: 将ASP页面逻辑和数据访问代码,用PHP语言和DEDE的API重新实现。
- 数据转换: 将Access/SQL Server数据库中的数据,迁移到MySQL数据库中,并调整数据结构以适应DEDE。
- 模板转换: 将ASP的HTML/ASP混合页面,转换为DEDE的模板引擎(
{dede:...}- URL重写: 将旧的
.aspURL,通过伪静态规则,重定向到新的.phpURL,保证SEO和用户体验。 - URL重写: 将旧的
第一步:准备工作
-
分析源站(新云ASP):
- 网站结构: 梳理网站有多少个栏目、频道、专题,了解每个栏目的文章类型(普通文章、图集、软件等)。
- 数据库结构: 导出并仔细分析新云的数据库表结构,重点记录文章表、栏目表、模型表、用户表等关键字段和字段含义。这是最关键的一步。
- 模板文件: 查看并备份所有ASP模板文件(通常在
templates目录下)。 - 文件结构: 了解网站的文件组织方式,如上传目录、附件目录等。
-
准备目标环境(DEDE):
- 服务器: 安装支持PHP (建议7.2+) 和MySQL (建议5.6+) 的环境(如Linux + Apache/Nginx)。
- 安装DEDE: 下载最新版的DEDE(如DedeCMS V5.7或V6.x),在服务器上完成安装,并设置好后台管理账号。
- 规划栏目: 在DEDE后台,根据第一步的分析结果,预先创建好所有需要的栏目和内容模型。注意:新云的模型可能与DEDE默认模型不同,可能需要自定义DEDE模型。
第二步:数据库迁移(核心难点)
这是整个转换过程中最复杂、最容易出错的一步。

(图片来源网络,侵删)
-
导出源数据:
- Access数据库: 使用Access软件打开数据库,选择所有表,导出”为SQL脚本。
- SQL Server数据库: 使用SQL Server Management Studio (SSMS),右键数据库 -> 任务 -> 生成脚本,选择所有表和数据,保存为
.sql文件。
-
转换SQL脚本:
- 语法转换: Access/SQL Server的SQL语法与MySQL有差异,需要手动或使用工具进行转换。
- 数据类型:
TEXT->TEXT/LONGTEXT,INT->INT,DATETIME->DATETIME,YES/NO->TINYINT(1)。 - 自增ID:
IDENTITY(1,1)->AUTO_INCREMENT。 - 字符串连接符: ->
CONCAT()。 - 分页:
TOP N->LIMIT N。 - 注释: 或 保持不变。
- 数据类型:
- 表前缀处理: 新云的表前缀可能是
ny_或自定义的,DEDE默认是dede_,你可以修改转换后的SQL脚本,将所有ny_替换为dede_,或者在导入DEDE时指定正确的表前缀。
- 语法转换: Access/SQL Server的SQL语法与MySQL有差异,需要手动或使用工具进行转换。
-
创建目标数据库:
- 在MySQL中创建一个新的数据库,
dede_db。
- 在MySQL中创建一个新的数据库,
-
导入数据:
(图片来源网络,侵删)- 使用phpMyAdmin等工具,将转换好的SQL脚本导入到
dede_db中。
- 使用phpMyAdmin等工具,将转换好的SQL脚本导入到
-
数据结构对齐与修正:
- 这是最关键的一步,导入的数据很可能无法直接被DEDE识别,因为表结构完全不同。
- 文章表: 新云的文章表(如
ny_news)需要映射到DEDE的主文章表dede_archives和附加表dede_addonarticle。ny_news.title->dede_archives.titleny_news.content->dede_addonarticle.bodyny_news.posttime->dede_archives.pubdateny_news clicks->dede_archives.clickny_news.typeid->dede_archives.typeid(这个ID需要与新云的栏目ID对应)
- 手动编写SQL脚本: 通常需要编写复杂的SQL
UPDATE或INSERT INTO ... SELECT ...语句,将旧表的数据精确地填充到DEDE的新表中。 - 处理栏目ID: 如果新云和DEDE的栏目ID不一致,需要创建一个ID对照表,然后通过SQL脚本进行批量替换。
- 处理图片/附件路径: 数据库中的图片和附件路径是绝对路径(如
http://www.old.com/upload/1.jpg),需要批量替换为相对路径(如/upload/1.jpg),并确保这些文件已正确复制到DEDE的uploads目录。
第三步:模板转换
将ASP模板转换为DEDE模板。
-
创建DEDE模板:
- 在DEDE后台,进入“模板管理” -> “默认模板管理”,为每个栏目创建对应的模板文件(如
index_article.htm,list_article.htm,article_article.htm)。
- 在DEDE后台,进入“模板管理” -> “默认模板管理”,为每个栏目创建对应的模板文件(如
-
标签替换:
- 这是模板转换的核心,将ASP中的循环、判断、变量替换为DEDE的模板标签。
- 循环列表:
- ASP:
<% Do While Not rs.EOF ... rs.MoveNext Loop %> - DEDE:
{dede:arclist titlelen='30' row='10'} <a href="[field:arcurl/]">[field:title/]</a> {/dede:arclist}
- ASP:
- 页:
- ASP:
<%=rs("title")%> - DEDE:
{dede:field.title/} - ASP:
<%=rs("content")%> - DEDE:
{dede:field.body/}
- ASP:
- 栏目信息:
- ASP:
<%=rs_class("classname")%> - DEDE:
{dede:field.typename/}
- ASP:
- 分页:
- ASP: 手动生成分页链接。
- DEDE:
{dede:pagelist listsize='4' listitem='index pre pageno next end'/}
- 特殊字段: 如文章来源、作者、点击数等,使用DEDE对应的
{dede:field.source/},{dede:field.writer/},{dede:field.click/}等标签。
-
保留样式和JS: 将原ASP模板中的CSS和JavaScript代码原样复制到DEDE模板的相应位置。
第四步:程序与文件迁移
-
静态文件迁移:
- 将原网站的所有图片、CSS、JS、上传附件等文件,批量复制到DEDE的
uploads目录下,注意保持原有的目录结构。
- 将原网站的所有图片、CSS、JS、上传附件等文件,批量复制到DEDE的
-
自定义程序转换:
如果新云网站有自定义的ASP功能(如留言本、表单提交等),你需要用PHP重新开发这些功能,或者寻找DEDE的相应插件来替代,这通常需要一定的PHP开发能力。
第五步:URL重定向与SEO优化
为了让用户和搜索引擎能够从旧地址访问到新地址,必须设置URL重定向。
-
服务器配置:
- Apache: 在网站根目录下创建或修改
.htaccess文件。 - Nginx: 在Nginx的配置文件中添加
rewrite规则。
- Apache: 在网站根目录下创建或修改
-
编写重定向规则:
- 栏目页重定向:
- 旧:
http://www.old.com/news.asp - 新:
http://www.new.com/news/ - 规则:
RewriteRule ^news\.asp$ /news/ [R=301,L]
- 旧:
- 文章页重定向:
- 旧:
http://www.old.com/news.asp?id=123 - 新:
http://www.new.com/news/123.html - 规则:
RewriteRule ^news\.asp\?id=(.*)$ /news/$1.html [R=301,L]
- 旧:
- 通用规则: 需要根据你网站的实际URL结构来编写大量的重定向规则,确保每一个旧URL都能正确跳转到对应的新URL。
- 栏目页重定向:
-
提交Sitemap:
在DEDE后台生成新的网站地图(XML格式),然后提交到百度、Google等搜索引擎站长平台,告知网站已迁移。
总结与建议
| 步骤 | 核心任务 | 难度 | 关键点 |
|---|---|---|---|
| 准备 | 分析源站,搭建DEDE环境 | 低 | 深入理解新云网站结构 |
| 数据迁移 | 数据导出、转换、导入、对齐 | 极高 | 数据表结构映射和SQL脚本编写 |
| 模板转换 | ASP模板转DEDE模板标签 | 中 | 熟练掌握DEDE模板引擎标签 |
| 程序迁移 | 静态文件复制,功能重写 | 中至高 | PHP开发能力,寻找替代插件 |
| URL重定向 | 配置服务器伪静态规则 | 中 | 编写正确的301重定向规则 |
重要建议:
- 先做测试: 在正式迁移前,务必在本地或测试环境完整演练一遍流程,确保所有步骤都可行。
- 备份数据: 在操作前,务必对原网站和DEDE新网站进行完整备份。
- 寻求专业帮助: 如果网站规模较大、结构复杂,或者您不具备相关的技术能力,强烈建议寻找专业的网站迁移服务,这是一个“看起来简单,做起来复杂”的活,一个环节出错就可能导致整个网站无法正常工作。
- 保持耐心: 这个过程非常繁琐,需要极大的耐心和细心,尤其是在数据转换和修正阶段。
