这是一个非常经典且实用的需求,主要目的是减轻主站的带宽压力、提高页面加载速度、并利于搜索引擎优化(SEO)。

核心原理
实现附件二级域名的核心原理是 “域名绑定 + 文件重定向”。
- 域名绑定:在你的服务器或虚拟主机上,将一个新的二级域名(
static.yourdomain.com或files.yourdomain.com)绑定到你的网站空间,这个空间可以与主站使用同一个空间,也可以使用一个独立的、专门用于存放静态文件的空间。 - 文件重定向:在 DedeCMS 的后台进行配置,当系统需要调用附件(如图片、文档、压缩包等)时,不再是生成主站的路径(
/uploads/allimg/2025/10/01/xxx.jpg),而是生成二级域名的完整 URL(http://static.yourdomain.com/uploads/allimg/2025/10/01/xxx.jpg)。 - 文件同步:确保上传到主站的附件,能够被同步或直接存放在二级域名绑定的那个目录下,在大多数虚拟主机环境下,它们指向的是同一个物理目录,所以文件是天然同步的。
详细操作步骤
假设你的主域名是 yourdomain.com,你希望使用 static.yourdomain.com 作为附件二级域名。
第一步:服务器/虚拟主机配置
-
添加二级域名:
- 如果你使用的是虚拟主机:登录你的虚拟主机控制面板(如 cPanel、宝塔面板等),找到“域名绑定”、“主机管理”或“子域名”功能,添加一个子域名
static,并将其指向你的网站空间根目录(通常与主域名yourdomain.com指向同一个目录)。 - 如果你使用的是 VPS/独立服务器:在 Nginx 或 Apache 的配置文件中添加一个新的 Server 块,指向主站的网站根目录。
Nginx 示例配置:
(图片来源网络,侵删)server { listen 80; server_name static.yourdomain.com; root /www/wwwroot/yourdomain.com; # 指向与主站相同的网站根目录 index index.html index.htm; # 其他必要的配置... }Apache 示例配置 (在 httpd.conf 或 vhost.conf 中):
<VirtualHost *:80> ServerName static.yourdomain.com DocumentRoot "/www/wwwroot/yourdomain.com" # 指向与主站相同的网站根目录 # 其他必要的配置... </VirtualHost>配置完成后,重启 Nginx/Apache 服务。
- 如果你使用的是虚拟主机:登录你的虚拟主机控制面板(如 cPanel、宝塔面板等),找到“域名绑定”、“主机管理”或“子域名”功能,添加一个子域名
-
解析二级域名:
- 登录你的域名解析服务商(如阿里云、腾讯云、Cloudflare 等)。
- 为
static.yourdomain.com添加一条A记录,解析值为你服务器的 IP 地址。 - 等待 DNS 生效(通常几分钟到几小时)。
第二步:DedeCMS 后台配置
这是最关键的一步,通过修改配置文件,让 DedeCMS 在生成附件路径时使用新的二级域名。

-
找到并打开配置文件: 使用 FTP 或文件管理器,登录你的网站服务器,找到并下载
dede/config.php文件,这个文件是 DedeCMS 的核心配置文件。 -
修改
cfg_cmspath和cfg_mainsite:cfg_cmspath:这个变量定义了网站的根目录 URL。强烈建议将其修改为你的主域名,而不是二级域名。// 原始值可能是 '/dedecms' 或 '' $cfg_cmspath = 'http://www.yourdomain.com'; // 修改为你的主域名
cfg_mainsite:这个变量定义了主站的 URL,同样,设置为你的主域名。// 原始值可能是 'http://www.yourdomain.com' $cfg_mainsite = 'http://www.yourdomain.com'; // 确保是主域名
-
添加附件域名配置变量: 这是实现附件二级域名的核心,在
config.php文件中,找到合适的位置(通常在$cfg_cmspath和$cfg_mainsite附近),添加以下配置:// 新增:附件、图片、软件等使用的二级域名 // 注意:这里不要带末尾的斜杠 '/' $cfg_attachmenturl = 'http://static.yourdomain.com'; $cfg_mediasurl = 'http://static.yourdomain.com'; // 媒体文件路径
$cfg_attachmenturl:主要用于附件、文档等。$cfg_mediasurl:主要用于图片、视频等多媒体文件。- 在很多版本的 DedeCMS 中,这两个变量可能只存在一个,或者效果是重叠的,如果不确定,可以都加上,指向同一个二级域名。
-
保存并上传文件: 修改完成后,保存
config.php文件,并将其重新上传到服务器,覆盖原文件。
第三步:验证和测试
-
更新缓存: 登录 DedeCMS 后台,进入【系统】-> 【系统基本参数】,点击右上角的“一键更新所有缓存”按钮,这一步非常重要,确保新的配置被系统读取。
-
测试:
- 登录后台,发布一篇新文章,并上传一张图片或一个附件。
- 发布成功后,查看文章的页面源代码(在浏览器中右键“查看页面源代码”)。
- 找到图片或附件的
src或href属性,检查其 URL 是否已经变成了http://static.yourdomain.com/...的格式。
-
:
-
修改配置只对新上传的附件生效。之前已经发布的文章,其附件路径不会自动改变。
-
如果需要更新旧内容的附件路径,可以进入【采集】-> 【采集侠】 或使用 SQL 数据库批量替换工具(非常危险,请务必提前备份数据库!)。
-
SQL 替换示例(请根据实际情况修改表名和路径):
-- 替换文章 body 中的旧路径 UPDATE `dede_archives` SET `body` = REPLACE(`body`, 'http://www.yourdomain.com/uploads', 'http://static.yourdomain.com/uploads'); -- 替换附加表中的旧路径(如图片集) UPDATE `dede_addonimages` SET `body` = REPLACE(`body`, 'http://www.yourdomain.com/uploads', 'http://static.yourdomain.com/uploads');
警告:直接操作数据库有风险,如果不确定,请手动编辑旧文章来更新。
-
注意事项与高级技巧
-
Cookie 跨域问题: 如果你的主站和附件域名是分开的(例如主站是
www.yourdomain.com,附件是static.yourdomain.com),那么用户在www域名登录后,访问static域名下的资源时,可能会因为 Cookie 作用域不同而导致未登录状态。- 解决方案:在 DedeCMS 的登录处理代码中,设置 Cookie 的
domain为.yourdomain.com(注意前面的点),这样 Cookie 在所有yourdomain.com的子域名下都有效,这通常需要修改member目录下的相关 PHP 文件。
- 解决方案:在 DedeCMS 的登录处理代码中,设置 Cookie 的
-
HTTPS 支持: 如果你的主站启用了 HTTPS,那么附件二级域名也应该启用 HTTPS,以避免“混合内容”安全警告。
- 步骤:
- 为
static.yourdomain.com申请并安装 SSL 证书。 - 在服务器配置中强制
static域名跳转到 HTTPS。 - 修改
config.php中的附件域名配置为https://static.yourdomain.com。 - 同样,在后台更新缓存。
- 为
- 步骤:
-
CDN 加速: 这是更高级的玩法,你可以将
static.yourdomain.com这个域名接入 CDN(内容分发网络,如 Cloudflare、阿里云 CDN、腾讯云 CDN 等)。- 好处:利用 CDN 的全球节点,将附件文件缓存到离用户最近的服务器,实现全球加速,极大提升访问速度,同时进一步减轻源站压力。
- 操作:在 CDN服务商处配置源站为你的服务器 IP,然后将
static.yourdomain.com的 DNS 解析指向 CDN 提供的 CNAME 地址即可,DedeCMS 的配置方式不变。
通过以上步骤,你就可以成功地为 DedeCMS 配置附件二级域名,从而优化你的网站性能和用户体验。
