- 移动文件和修改配置:将网站文件移动到新位置,并修改核心配置文件以指向新路径。
- 服务器配置(伪静态规则):修改服务器的伪静态规则,让子目录的链接也能被正确解析。
下面我将为你提供一份详细、分步的图文指南(以 Nginx 和 Apache 服务器为例)。

第一步:移动文件与修改配置
备份!备份!备份!
在进行任何操作之前,请务必备份你的整个网站文件和数据库,这是防止操作失误导致网站崩溃的唯一有效方法。
- 文件备份:通过 FTP 或 SSH 将你网站根目录下的所有文件下载到本地。
- 数据库备份:登录你的 DedeCMS 后台,在“系统” -> “数据库备份/恢复”中,创建一个新的数据库备份文件并下载。
创建子目录并通过 FTP 上传文件
- 登录你的服务器(通过 FTP 或 SSH),在网站根目录下创建一个新的子目录,
dedecms。- 你的网站根目录路径通常是
/wwwroot或/home/wwwroot/等。 - 创建后,路径就变成了
/wwwroot/dedecms。
- 你的网站根目录路径通常是
- 将你之前备份的 DedeCMS 网站所有文件(除了
data目录下的common.inc.php,这个文件我们后面会手动处理),全部上传到这个新的dedecms子目录中。
修改核心配置文件 common.inc.php
这是最关键的一步,我们需要告诉 DedeCMS 它的新位置在哪里。
-
通过 FTP 找到并下载
/wwwroot/dedecms/data/common.inc.php文件。 -
用文本编辑器(如 VS Code, Sublime Text, Notepad++)打开它。
(图片来源网络,侵删) -
找到下面这行代码:
define('DEDEROOT', __ROOT__); -
将它修改为指向你的子目录。
__ROOT__是一个魔术变量,代表网站根目录,我们只需要把它的值改成你的子目录名即可。// 修改前 // define('DEDEROOT', __ROOT__); // 修改后 (如果你的子目录是 'dedecms') define('DEDEROOT', __ROOT__.'/dedecms');- 注意:这里的
__ROOT__在不同服务器环境下可能代表 或/你的域名/,但通常直接使用__ROOT__.'/子目录名'是最稳妥的方式。
- 注意:这里的
修改后台目录配置(可选但推荐)
DedeCMS 默认的后台目录是 /dede,如果你的后台目录没有修改过,可以跳过这一步,如果你曾经修改过后台目录名(比如改成了 /admin),为了后续操作方便,最好先把它改回默认的 /dede,等所有操作完成后再改回来。
第二步:配置服务器伪静态规则
这一步的目的是为了让服务器能够正确识别并解析 DedeCMS 的 URL 链接,/a/1.html,如果不做这一步,访问子目录下的文章或栏目页面时,就会出现 404 错误。
你需要根据你的服务器类型(Nginx 或 Apache)来选择对应的操作。
如果你的服务器是 Nginx
-
登录你的 Nginx 服务器,找到网站的配置文件,通常位于
/usr/local/nginx/conf/vhost/目录下,文件名是你的域名,yourdomain.com.conf。 -
在
server块内,找到location / { ... }的配置段。 -
在
location / { ... }的try_files语句之前,插入以下 DedeCMS 的伪静态规则。# 在 location / { ... } 内部添加 location / { # ... 其他配置 ... # 添加下面的 DedeCMS 伪静态规则 rewrite "^/a([^\.]*).html$" /dedecms/a/$1.html last; rewrite "^/list-([0-9]+)\.html$" /dedecms/list.php?tid=$1 last; rewrite "^/list-([0-9]+)-([0-9]+)-([0-9]+)\.html$" /dedecms/list.php?tid=$1&totalresult=$2&PageNo=$3 last; rewrite "^/view-([0-9]+)-([0-9]+)\.html$" /dedecms/view.php?aid=$1&cid=$2 last; # 如果你的网站根目录下还有其他程序,请确保它们的规则在 DedeCMS 规则之前 # WordPress # if (!-e $request_filename) { # rewrite . /index.php last; # } try_files $uri $uri/ /index.php?$args; }- 注意:规则中的
/dedecms要和你创建的子目录名保持一致。
- 注意:规则中的
-
保存配置文件,然后执行命令重新加载 Nginx 配置使其生效:
nginx -s reload
如果你的服务器是 Apache
-
登录你的 Apache 服务器,找到网站根目录下的
.htaccess文件,如果不存在,就创建一个。 -
打开
.htaccess文件,确保里面包含 DedeCMS 的伪静态规则,如果没有,就添加以下内容:<IfModule mod_rewrite.c> RewriteEngine On # 将 RewriteBase 后面的 / 改为你的子目录名 /dedecms RewriteBase /dedecms RewriteRule ^a/([a-z0-9\-]+)\.html$ a/$1.html RewriteRule ^list-([0-9]+)\.html$ list.php?tid=$1 RewriteRule ^list-([0-9]+)-([0-9]+)-([0-9]+)\.html$ list.php?tid=$1&totalresult=$2&PageNo=$3 RewriteRule ^view-([0-9]+)-([0-9]+)\.html$ view.php?aid=$1&cid=$2 </IfModule>
- 关键点:
RewriteBase /dedecms这一行,/dedecms必须和你的子目录名完全一致。
- 关键点:
-
确保 Apache 的
mod_rewrite模块已经启用,通常虚拟主机商会默认开启,如果你自己管理服务器,可以检查一下。
第三步:清理缓存与测试
-
清理缓存:
- 登录你的 DedeCMS 后台(地址现在是
http://你的域名/dedecms/dede/)。 - 进入“系统” -> “系统基本参数” -> “性能选项”。
- 将“网站HTML缓存”设置为“否”,然后点击“保存”。
- 进入“系统” -> “SQL命令工具”,执行以下命令来清理所有缓存:
DELETE FROM `dede_arccache`; DELETE FROM `dede_homecache`;
- (可选)如果开启了全站生成静态,可以在“生成” -> “一键更新网站”中重新生成一下首页和栏目。
- 登录你的 DedeCMS 后台(地址现在是
-
测试:
- 前台:访问
http://你的域名/dedecms/,看网站首页是否正常显示。 - 文章/栏目页:点击一个文章链接或栏目链接,看是否能正常打开,会不会出现 404 错误。
- 后台:访问
http://你的域名/dedecms/dede/,输入用户名密码,看是否能成功登录后台。
- 前台:访问
如果以上所有步骤都正确无误,你的 DedeCMS 网站就已经成功移动到子目录了。
常见问题与解决方法
-
Q: 移动后,后台登录提示“验证码错误”?
- A: 这是因为
data目录的权限问题,请确保data目录及其下所有文件的权限设置正确,Linux 下设置为755(目录)和644(文件)即可,可以通过 FTP 客户器右键修改属性。
- A: 这是因为
-
Q: 前台首页能打开,但文章页 404?
- A: 99% 的原因是服务器伪静态规则没有配置正确或没有生效,请仔细检查 Nginx 或 Apache 的配置,确保规则中的子目录名与实际创建的一致,并确保服务器已重新加载了配置。
-
Q: 网站样式和图片加载不出来?
- A: 检查 CSS 和图片的引用路径,如果它们是绝对路径(如
/images/1.jpg),在子目录下就会变成/dedecms/images/1.jpg,这通常是正确的,如果路径有问题,可能是 DedeCMS 的“站点设置”里的“站点根网址”没有自动更新,可以手动检查并修正。
- A: 检查 CSS 和图片的引用路径,如果它们是绝对路径(如
-
Q: 如果我想把子目录变回根目录怎么办?
- A: 按照上述步骤反向操作即可:1. 将文件移回根目录;2. 将
common.inc.php中的define('DEDEROOT', __ROOT__.'/dedecms');改回define('DEDEROOT', __ROOT__);;3. 将服务器伪静态规则中的/dedecms前缀去掉;4. 清理缓存。
- A: 按照上述步骤反向操作即可:1. 将文件移回根目录;2. 将
