核心思路
整个过程分为三个主要步骤:

(图片来源网络,侵删)
- 文件操作:将网站文件从根目录移动到新的子目录。
- 数据库修改:登录数据库,将所有存储在数据库中的、指向根目录的链接(包括文章内容、图片路径、配置等)更新为指向新的子目录。
- 配置文件修改:修改织梦的核心配置文件,使其适应新的路径。
第一步:准备工作(至关重要!)
在开始任何操作之前,请务比完成以下准备工作,以防万一:
-
备份!备份!备份!
- 备份数据库:进入你的网站后台(
/dede/目录),找到“系统” -> “数据库备份/恢复”,先进行一次完整的数据库备份,或者通过你的虚拟主机控制面板(如cPanel、宝塔面板)的数据库管理工具(如phpMyAdmin)导出数据库文件(.sql格式)。 - 备份网站文件:通过FTP或虚拟主机文件管理器,将你网站根目录下的所有文件下载到本地电脑,确保备份完整。
- 备份数据库:进入你的网站后台(
-
记录信息
- 旧域名:
www.oldsite.com - 新域名:
www.oldsite.com/subdir(这里的subdir就是你想创建的子目录名) - 数据库名称、用户名、密码:这些信息通常在
/include/config_base.php或/data/config.cache.inc.php文件中可以找到,或者在虚拟主机后台的数据库设置里。
- 旧域名:
第二步:移动文件
- 通过FTP连接:使用FTP工具(如FileZilla)连接到你的服务器。
- 创建子目录:在网站根目录下创建一个新的文件夹,
subdir。 - 移动文件:
- 将根目录下 除了
subdir文件夹本身 的所有文件和文件夹(如dede、include、templets、images、plus等)剪切并粘贴 到刚刚创建的subdir文件夹中。 - 特别注意:不要移动
subdir文件夹,否则会形成无限嵌套,最终你的FTP结构应该是:/ ├── subdir/ <-- 你的新网站根目录 │ ├── dede/ │ ├── include/ │ ├── images/ │ └── ... (所有网站文件) └── (其他可能存在的文件,如robots.txt, .htaccess等)
- 将根目录下 除了
第三步:修改数据库
这是最关键的一步,需要批量替换数据库中的旧路径。

(图片来源网络,侵删)
-
进入phpMyAdmin:在你的虚拟主机控制面板中找到phpMyAdmin,并选择你的织梦数据库。
-
执行SQL查询:
- 点击顶部的 "SQL" 选项卡。
- 在文本框中粘贴下面的SQL语句。请务必将
旧路径和新路径替换为你自己的实际路径。
-- 1. 更新系统配置中的路径 UPDATE `dede_sysconfig` SET `value` = REPLACE(`value`, '旧路径', '新路径') WHERE `varname` IN ('cfg_cmspath', 'cfg_cmsabs', 'cfg_indexurl', 'cfg_basehost'); -- 2. 更新文档内容中的链接 (织梦默认使用[field:arcurl/],但有些地方可能直接存了URL) UPDATE `dede_archives` SET `redirecturl` = REPLACE(`redirecturl`, '旧路径', '新路径'); -- 3. 更新自定义表单中的路径(如果使用了自定义表单) UPDATE `dede_diyform` SET `content` = REPLACE(`content`, '旧路径', '新路径'); -- 4. 更新附加表中的内容(如商品、软件等模型) -- 以下是通用示例,如果你的模型附加表名不是 `dede_addonarticle`,请自行修改 UPDATE `dede_addonarticle` SET `body` = REPLACE(`body`, '旧路径', '新路径'); -- 如果还有其他模型,请继续添加, -- UPDATE `dede_addonsoft` SET `body` = REPLACE(`body`, '旧路径', '新路径'); -- UPDATE `dede_addonproduct` SET `body` = REPLACE(`body`, '旧路径', '新路径'); -- 5. 更新所有文章中的URL链接(这个非常重要,能替换文章内容里手动添加的链接) UPDATE `dede_archives` SET `body` = REPLACE(`body`, '旧路径', '新路径'); UPDATE `dede_arctype` SET `description` = REPLACE(`description`, '旧路径', '新路径'); UPDATE `dede_arctype` SET `keywords` = REPLACE(`keywords`, '旧路径', '新路径'); UPDATE `dede_feedback` SET `msg` = REPLACE(`msg`, '旧路径', '新路径'); UPDATE `dede_help` SET `content` = REPLACE(`content`, '旧路径', '新路径'); UPDATE `dede_myad` SET `normbody` = REPLACE(`normbody`, '旧路径', '新路径'); UPDATE `dede_myad` SET `expbody` = REPLACE(`expbody`, '旧路径', '新路径'); UPDATE `dede_sgpage` SET `templet` = REPLACE(`templet`, '旧路径', '新路径'); UPDATE `dede_sgpage` SET `body` = REPLACE(`body`, '旧路径', '新路径'); UPDATE `dede_soft` SET `introduce` = REPLACE(`introduce`, '旧路径', '新路径'); UPDATE `dede_special` SET `content` = REPLACE(`content`, '旧路径', '新路径'); -
路径替换说明:
- 旧路径:通常是你的网站域名,
http://www.oldsite.com/或www.oldsite.com/。请务必以 结尾。 - 新路径:是你的新域名加子目录,
http://www.oldsite.com/subdir/或www.oldsite.com/subdir/。请务必以 结尾。 - 示例:如果旧路径是
http://www.example.com/,新路径是http://www.example.com/blog/,那么SQL语句中的替换就是将http://www.example.com/替换成http://www.example.com/blog/。
- 旧路径:通常是你的网站域名,
-
执行:检查SQL语句无误后,点击 "执行" 按钮,这可能会花费一些时间,取决于你的网站数据量。
(图片来源网络,侵删)
第四步:修改配置文件
现在需要修改织梦的配置文件,让它知道自己的新位置在哪里。
-
修改
/include/config_base.php-
通过FTP进入
subdir/include/目录,下载config_base.php文件。 -
用代码编辑器打开它。
-
找到
$cfg_cmspath和$cfg_cmsurl这两个变量。 -
将它们的值修改为你的 新子目录路径。
// 修改前 // $cfg_cmspath = '/home/wwwroot/oldsite'; // $cfg_cmsurl = 'http://www.oldsite.com'; // 修改后 (假设子目录名为 subdir) $cfg_cmspath = '/home/wwwroot/oldsite/subdir'; // 修改为服务器上的绝对路径 $cfg_cmsurl = 'http://www.oldsite.com/subdir'; // 修改为新的URL
-
保存文件并上传回服务器,覆盖原文件。
-
-
修改
/data/config.cache.inc.php- 进入
subdir/data/目录,下载config.cache.inc.php文件。 - 用代码编辑器打开它,这个文件是序列化过的,直接看是乱码,但我们可以直接修改里面的URL。
- 按下
Ctrl+F搜索cfg_basehost,找到类似'cfg_basehost';s:20:"http://www.oldsite.com";'这样的行。 - 将
http://www.oldsite.com修改为你的 新域名,http://www.oldsite.com/subdir。 - 同样,搜索
cfg_indexurl,找到类似'cfg_indexurl';s:25:"http://www.oldsite.com/";'的行,修改为'http://www.oldsite.com/subdir/';。 - 保存文件并上传回服务器。
- 进入
