这个过程需要修改几个关键配置文件,并确保所有路径都指向新的位置,请务必在操作前备份你的网站文件和数据库。

(图片来源网络,侵删)
下面是详细的步骤,分为“通用步骤”和“具体文件修改”两部分。
第一步:通用操作步骤
-
备份!备份!备份!
- 备份你的整个网站程序文件(通过 FTP 或 SSH 下载)。
- 备份数据库(在 DEDE 后台 -> 系统 -> 数据库备份/恢复,或通过 phpMyAdmin 导出)。
-
上传文件到子目录
- 通过 FTP 或 SSH 登录你的服务器。
- 将你备份的 DEDE 网站所有文件上传到服务器的目标子目录中,如果你想放在
/mywebsite/目录下,就把所有文件上传到public_html/mywebsite/(对应www.example.com/mywebsite/)。
-
修改数据库中的路径
(图片来源网络,侵删)- 这是最关键的一步,你需要将数据库中所有存储为绝对路径(以 开头)的记录,修改为新的子目录路径。
- 登录你的数据库管理工具,如 phpMyAdmin。
- 选择你的 DEDE 数据库。
- 在 SQL 查询窗口中,执行以下几条 SQL 语句。请将
/mywebsite/替换为你自己的实际子目录名,且确保前后都有斜杠 。
-- 1. 修改 dede_arctype 表中的顶级栏目路径 UPDATE `dede_arctype` SET `typedir` = CONCAT('/mywebsite', SUBSTRING(`typedir` FROM 2)) WHERE `topid` = 0; -- 2. 修改 dede_arctype 表中的所有栏目路径(如果顶级栏目路径修改正确,这一步可以省略,但为了保险建议执行) UPDATE `dede_arctype` SET `typedir` = CONCAT('/mywebsite', `typedir`) WHERE `typedir` NOT LIKE '/mywebsite%'; -- 3. 修改 dede_archives 表中的文章URL(如果开启了目录式) UPDATE `dede_archives` SET `arcurl` = CONCAT('/mywebsite', `arcurl`) WHERE `arcurl` NOT LIKE '/mywebsite%'; -- 4. 修改 dede_site 表中的站点路径 UPDATE `dede_site` SET `sitepath` = '/mywebsite/'; -- 5. 修改 dede_homepageset 表中的默认主页路径 UPDATE `dede_homepageset` SET `templet` = CONCAT('/mywebsite', `templet`) WHERE `templet` NOT LIKE '/mywebsite%';注意:
- 上述 SQL 假设你的旧路径都是以 开头的,如果你的旧路径是相对路径(如
templets/default),则此方法不适用,但这种情况很少见。 - 执行前可以先
SELECT出一条记录看看,确认修改逻辑是否正确。
第二步:修改核心配置文件
你需要修改 DEDE 程序内部的配置文件,让它知道自己的新位置在哪里。
修改 /include/config_base.php
这个文件定义了网站的基本路径。
- 找到
$cfg_cmspath:这个变量通常定义了网站的根目录。 - 修改它:将其值修改为你的子目录名。
// 修改前 $cfg_cmspath = '/'; // 修改后 (假设你的子目录是 /mywebsite/) $cfg_cmspath = '/mywebsite/';
修改 /data/common.inc.php
这个文件是 DEDE 的核心配置文件,包含了数据库连接信息和一些全局路径。

(图片来源网络,侵删)
- 找到
$cfg_cmspath:同样,修改这个变量的值。 - 找到
$cfg_templets_dir:这个变量定义了模板文件所在的目录,如果模板目录在根目录下,它可能需要被修改。 - 找到
$cfg_member_dir:会员中心目录。 - 找到
$cfg_phpurl:用于存放 PHP 程序的目录。
示例修改:
假设你的目录结构如下:
/www/
|- mywebsite/
|- dedecms/
|- /templets/ <-- 模板目录
|- /member/ <-- 会员目录
|- /include/ <-- 核心程序
|- /data/
|- ...
并且你把 DEDE 程序放在了 /mywebsite/dedecms/ 目录下。
那么你的 common.inc.php 可能需要这样修改:
// 修改前 $cfg_cmspath = '/'; $cfg_templets_dir = '/templets'; $cfg_member_dir = '/member'; $cfg_phpurl = '/include'; // 修改后 $cfg_cmspath = '/mywebsite/dedecms'; $cfg_templets_dir = '/mywebsite/dedecms/templets'; $cfg_member_dir = '/mywebsite/dedecms/member'; $cfg_phpurl = '/mywebsite/dedecms/include';
注意: 这里的路径修改取决于你实际的文件上传位置,最稳妥的方法是,将整个 DEDE 程序文件夹(dedecms_v57_sp2_full)上传到子目录里,$cfg_cmspath 就指向这个文件夹。
修改 /dede/ 目录下的配置文件
DEDE 后台程序也需要知道新路径。
- 打开
/dede/config.php- 找到
$cfg_cmspath并修改它。 - 找到
$cfg_basedir并修改它,指向你的网站根目录(/mywebsite/)。 - 找到
$cfg_templets_dir并修改它。
- 找到
示例 (/dede/config.php):
// 修改前 $cfg_cmspath = '/'; $cfg_basedir = '../'; $cfg_templets_dir = '../templets'; // 修改后 (假设 DEDE 在 /mywebsite/dedecms/) $cfg_cmspath = '/mywebsite/dedecms'; $cfg_basedir = '../'; // 相对于 dede 目录,网站根目录是上一级 $cfg_templets_dir = '../templets';
修改模板文件中的路径
如果你的模板文件(.htm)中使用了硬编码的绝对路径,
<a href="/plus/list.php?tid=1">栏目</a>
<img src="/images/logo.png" />
这些也需要修改,推荐使用 DEDE 的全局标签 {dede:global.cfg_cmspath/} 来代替根目录路径。
修改前:
<link href="/templets/default/style.css" rel="stylesheet"> <a href="/plus/feedback.php">留言</a>
修改后:
<link href="{dede:global.cfg_cmspath/}/templets/default/style.css" rel="stylesheet">
<a href="{dede:global.cfg_cmspath/}/plus/feedback.php">留言</a>
第三步:最终检查与测试
- 清空缓存:登录 DEDE 后台,进入“系统” -> “系统基本参数” -> “性能选项”,点击“清空所有缓存”。
- 访问测试:
- 访问你的新网站地址:
http://www.yourdomain.com/mywebsite/,检查首页是否正常。 - 访问几个栏目页和文章页,确保链接和图片都正常。
- 尝试访问会员中心(如果有的话):
http://www.yourdomain.com/mywebsite/member/。 - 尝试登录 DEDE 后台:
http://www.yourdomain.com/mywebsite/dede/,确保能正常登录和操作。
- 访问你的新网站地址:
如果一切正常,恭喜你,迁移成功!如果遇到问题(如404、图片不显示、链接错误),请仔细检查以上步骤,特别是数据库的 SQL 语句和配置文件中的路径是否正确。
