核心原理
无论使用哪种方法,核心原理都是一致的:

- 移动物理目录:将
data文件夹从网站根目录移动到新的位置(../data,即网站上一级目录)。 - 修改配置:告诉 DedeCMS 新的
data目录在哪里,这通过修改/include/common.inc.php文件中的$cfg_data_dir变量来实现。 - 权限设置:确保新位置的
data目录及其子目录有正确的读写权限。
直接修改配置文件(推荐)
这是最直接、最简单的方法,适用于大多数情况,尤其是当您有服务器文件管理权限时。
操作步骤
第 1 步:备份!备份!备份! 在进行任何文件修改之前,请务必备份您的整个网站程序和数据库,这是防止意外情况导致网站崩溃的唯一有效方法。
第 2 步:移动 data 目录
- 通过 FTP 或服务器的文件管理器,登录您的网站根目录。
- 找到
data文件夹。 - 将整个
data文件夹剪切并粘贴到您想要存放它的位置,最常见且安全的做法是将其放在网站根目录的上一级目录中。- 如果您的网站根目录是
/public_html,请将data移动到/public_html/../data(即/data)。 - 这样,
data目录就和您的网站文件不在同一层级,大大提高了安全性。
- 如果您的网站根目录是
第 3 步:修改配置文件

- 打开网站根目录下的文件:
/include/common.inc.php。 - 在这个文件中,找到下面这行代码:
$cfg_data_dir = $cfg_basedir . '/data';
- 将其修改为您
data目录的新路径。- 如果您按照第 2 步将
data移到了网站根目录的上一级,代码应修改为:// 假设网站根目录是 /home/user/public_html // data 目录就在 /home/user/data // $cfg_basedir 是 /home/user/public_html // 所以新路径需要向上跳一级 $cfg_data_dir = dirname($cfg_basedir) . '/data';
- 解释:
$cfg_basedir是一个变量,代表 DedeCMS 安装的根目录。dirname($cfg_basedir)可以获取$cfg_basedir的父目录路径。- 这样写的好处是,无论您把网站部署在服务器的哪个位置,这个路径都是正确的,具有很好的可移植性。
- 如果您按照第 2 步将
第 4 步:设置目录权限 这是至关重要的一步,否则网站将无法正常运行。
- 通过 FTP 或服务器命令行,找到您的新
data目录。 - 确保
data目录本身及其内部所有子目录和文件都具有755(目录)和644(文件)的权限。- 在 Linux 服务器上,您可以使用以下命令递归设置权限:
# 进入 data 的上一级目录执行 chmod -R 755 /path/to/your/data
- 如果您的
data目录需要写入权限(开启了缓存或某些模块需要写入),确保其权限为755,内部需要写入的目录(如cache)权限也为755。
- 在 Linux 服务器上,您可以使用以下命令递归设置权限:
第 5 步:测试网站 访问您的网站,检查是否能正常打开,登录后台,尝试执行一些操作,如生成首页、发布文章等,确保所有功能都正常。
使用 .htaccess 文件(高级/安全方法)
这种方法不直接修改 data 目录的物理位置,而是通过 Web 服务器(如 Apache)的规则来禁止外部直接访问 data 目录,这通常作为“隐藏” data 目录的手段,而不是真正的“转移”。
如果您已经通过方法一将 data 目录移到了上级,强烈建议同时使用此方法来加强安全。

操作步骤
第 1 步:创建或编辑 .htaccess 文件
-
在您的网站根目录下,找到
.htaccess文件,如果不存在,请创建一个。 -
在文件的开头,添加以下 Apache 规则:
<IfModule mod_authz_core.c> # 阻止所有外部用户访问 data 目录 Require all denied </IfModule> <IfModule !mod_authz_core.c> # 针对 Apache 2.2 及更早版本的规则 Order deny,allow Deny from all Allow from 127.0.0.1 </IfModule>
第 2 步:允许本地访问(可选但推荐)
上面的规则会阻止所有访问,包括 DedeCMS 自身的程序访问,为了确保程序能正常运行,通常需要允许来自本机(0.0.1)的访问,上面的代码已经包含了这部分(Allow from 127.0.0.1)。
第 3 步:设置 data 目录权限
即使使用了 .htaccess,data 目录本身也必须有正确的读写权限(通常是 755),否则 DedeCMS 程序无法写入文件。
第 4 步:测试网站
访问您的网站,并尝试在后台进行操作,确保一切正常,您也可以尝试在浏览器中直接访问 http://您的域名/data/,应该会看到 "403 Forbidden" 错误,这证明规则生效了。
常见问题与注意事项
- 权限问题导致 500 错误:这是最常见的问题,请务必检查新
data目录的权限是否正确。755是目录的标准权限。 - 路径错误导致白屏或无法访问:请仔细检查
/include/common.inc.php中$cfg_data_dir的路径是否正确,一个字符的错误都可能导致问题。 - 缓存问题:修改后,如果网站显示异常,可以尝试清空后台的“系统” -> “数据缓存”中的所有缓存文件。
- FTP 软件问题:一些 FTP 软件(如 FileZilla)在移动文件夹时可能会失败,建议尝试直接打包下载,然后在新位置上传并解压。
- 伪静态规则:如果您网站使用了伪静态,确保
.htaccess文件中的伪静态规则放在了data目录访问规则之后,以免被覆盖。
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| 修改配置 | 最直接、最彻底,真正将目录移出Web根目录。 | 需要手动修改文件,对新手有一定要求。 | 强烈推荐,所有情况下的首选方法。 |
.htaccess |
操作简单,无需移动文件,可以隐藏现有目录。 | 不是真正的转移,目录仍在Web可访问范围内,安全性不如方法一。 | 作为方法一的补充安全措施,或在不方便移动文件时使用。 |
对于绝大多数用户,强烈建议您使用【方法一:直接修改配置文件】,这是最规范、最安全的做法,完成后,再结合【方法二】使用,可以达到最佳的安全效果。
