核心思路
操作的核心分为三步:

- 物理移动:在服务器的文件管理器或通过FTP/SFTP,将
uploads文件夹移动到新的子目录(data/uploads)。 - 修改配置:修改织梦的核心配置文件,告诉系统新的文件上传路径。
- 更新数据库:更新数据库中所有已存在的图片、附件等资源的链接地址,使其指向新的路径。
详细操作步骤
第一步:准备工作(非常重要!)
-
备份!备份!备份!
- 备份数据库:在织梦后台的“系统” -> “数据备份”中,进行一次完整的数据备份。
- 备份网站文件:通过FTP或服务器控制面板,将整个网站目录下载到本地,特别是
/data目录和/include目录。 - 操作前务必确认备份可用,这是防止操作失误导致网站崩溃的唯一保障。
-
创建新目录
- 在你的网站根目录下,创建一个名为
data的子目录(如果该目录已存在则无需创建)。 - 为了安全,强烈建议将
data目录设置为不可从浏览器直接访问,你可以通过在该目录下创建一个index.html或index.php空文件来实现。 - 在
data目录下,创建一个名为uploads的子目录。
- 在你的网站根目录下,创建一个名为
第二步:移动文件
-
使用FTP/SFTP工具连接到你的服务器。
-
找到网站根目录下的
uploads文件夹。
(图片来源网络,侵删) -
将整个
uploads文件夹(及其内部所有文件和子文件夹)剪切并粘贴到你刚刚创建的/data/uploads目录下。- 移动前:
/home/yourdomain/www/uploads/... - 移动后:
/home/yourdomain/www/data/uploads/...
- 移动前:
第三步:修改织梦配置文件
这一步是告诉织梦,新的文件上传和存储位置在哪里。
-
打开网站根目录下的
/include/config.inc.php文件。 -
找到
$cfg_cmspath和$cfg_user_dir这两个变量。
(图片来源网络,侵删)$cfg_cmspath:通常指向你的网站根目录,保持默认即可,一般不需要修改。$cfg_user_dir:这个变量定义了用户上传文件的主目录,我们需要将它修改为新的子目录。
-
修改
$cfg_user_dir: 将其值从'uploads'修改为'data/uploads'。// 修改前 // $cfg_user_dir = 'uploads'; // 修改后 $cfg_user_dir = 'data/uploads';
-
保存并关闭
config.inc.php文件。
第四步:更新数据库中的旧链接
这是最关键也最容易出错的一步,数据库中以前的文章、图集等引用的图片路径还是旧的 /uploads/... 格式,必须全部更新为新的 /data/uploads/... 格式。
强烈建议使用织梦自带的SQL命令行工具进行操作,避免直接在后台执行可能超时的操作。
-
登录织梦后台 -> 系统 -> SQL命令行工具。
-
更新文章中的图片路径 执行以下SQL语句,将
dedecms_addonarticle表)、dedecms_archives(文章主表)等表中的旧路径更新。-- 更新文章附加表中的内容 UPDATE dedecms_addonarticle SET body = REPLACE(body, '/uploads/', '/data/uploads/'); -- 更新文章主表中的描述(如果图片路径在描述里) UPDATE dedecms_archives SET description = REPLACE(description, '/uploads/', '/data/uploads/');
注意:
dedecms_是你的数据库表前缀,请根据你的实际情况修改。- 如果你的网站还开启了图集功能,你还需要更新图集相关的表,
dedecms_addonimages。 - 如果附件也放在
uploads目录下,还需要更新dedecms_upload等附件表。
-
更新其他可能包含路径的表 根据你的网站情况,你可能还需要更新以下表(请先备份数据库再执行!):
-- 更新图集表 UPDATE dedecms_addonimages SET body = REPLACE(body, '/uploads/', '/data/uploads/'); -- 更新软件模型表(如果软件下载地址在uploads) UPDATE dedecms_addonsoft SET softwareurl = REPLACE(softwareurl, '/uploads/', '/data/uploads/'); UPDATE dedecms_addonsoft SET softintro = REPLACE(softintro, '/uploads/', '/data/uploads/'); -- 更新产品模型表(如果产品图片在uploads) -- ... 以此类推,根据你使用的模型进行操作
第五步:设置目录权限
为了确保网站能正常写入新文件,并提高安全性,需要设置正确的目录权限。
-
新目录权限:
- 将
/data/uploads目录的权限设置为 755 (或drwxr-xr-x)。 - 将
/data/uploads目录下所有文件的权限设置为 644 (或-rw-r--r--)。
- 将
-
旧目录处理(可选但推荐):
- 为了防止旧路径被意外访问,你可以将根目录下的
uploads文件夹重命名为uploads_old作为备份,或者直接删除(确保数据库已完全更新无误后再删除)。
- 为了防止旧路径被意外访问,你可以将根目录下的
第六步:测试
- 清理浏览器缓存。
- 登录织梦后台,尝试上传一张新的图片或附件。
- 前台访问一篇旧文章,检查图片是否能正常显示。
- 检查“图片集”、“软件”等模块,确认功能正常。
如果一切正常,恭喜你,操作成功!如果图片无法显示,请仔细检查第四步的SQL语句是否执行正确,以及路径是否写对。
安全加固建议
将 uploads 目录移入 data 目录后,你还可以进行以下加固:
-
设置
.htaccess文件: 在/data/uploads目录下创建一个.htaccess文件,并写入以下内容,可以禁止直接访问PHP等可执行文件,大大提高安全性。<Files ~ "\.(php|php3|php4|php5|phtml|pl|py|jsp|asp|sh|cgi)$"> Order Deny,Allow Deny from all </Files> -
定期备份:养成定期备份数据库和网站文件的好习惯。
通过以上步骤,你就安全地将织梦的 uploads 目录移动到了子目录,并修复了所有相关的链接。
