核心概念
- 子目录: 指的是你网站根目录下的一个文件夹,你的主站是
www.yourdomain.com,blog就是一个子目录,完整路径是www.yourdomain.com/blog/。 - 子域名: 指的是主域名下的一个二级域名,与
blog子目录对应的子域名可以是blog.yourdomain.com。 - 绑定: 指的是通过服务器配置,让访问
blog.yourdomain.com的请求,实际上指向到www.yourdomain.com/blog/这个文件夹下的内容。
操作步骤详解
整个过程分为三个主要部分:

- 服务器端配置:让服务器知道
blog.yourdomain.com指向哪个文件夹。 - DedeCMS 后台配置:告诉 DedeCMS 系统,这个子域名是它的一部分。
- 域名解析:让互联网上的 DNS 服务器知道
blog.yourdomain.com的 IP 地址是什么。
第一步:服务器端配置(关键步骤)
这是最核心的一步,你需要登录你的服务器(虚拟主机或云服务器)进行配置,这里我们以最常用的 Nginx 和 Apache 为例。
使用 Nginx 服务器
Nginx 的配置非常灵活,推荐使用 server 块的方式。
-
找到你的 Nginx 配置文件,通常位于
/etc/nginx/nginx.conf或在/etc/nginx/sites-available/目录下的某个文件中(如yourdomain.com)。 -
编辑配置文件,你需要在
http块内添加一个新的server块,专门用来处理子域名的请求。
(图片来源网络,侵删)# 假设你的网站根目录是 /var/www/www.yourdomain.com # 你的子目录 blog 位于 /var/www/www.yourdomain.com/blog # 主站配置 (www.yourdomain.com) server { listen 80; server_name www.yourdomain.com yourdomain.com; # 可以包含主域名和带www的域名 root /var/www/www.yourdomain.com; index index.php index.html index.htm; # ... 其他主站配置 ... location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } # 子域名配置 (blog.yourdomain.com) server { listen 80; server_name blog.yourdomain.com; # 绑定子域名 # 关键:将根目录指向子目录的物理路径 root /var/www/www.yourdomain.com/blog; index index.php index.html index.htm; # ... 其他配置可以和主站保持一致 ... location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } # 如果子目录下也有其他规则,也需要在这里配置 # 如果 blog 子目录也使用了 DedeCMS 的伪静态规则 location / { # blog 子目录有自己的伪静态规则,include # include /etc/nginx/conf.d/yourdomain.com.blog.conf; try_files $uri $uri/ /index.php?$query_string; } } -
保存配置文件,然后执行命令重新加载 Nginx 配置:
sudo nginx -t # 测试配置文件语法是否正确 sudo systemctl reload nginx # 重新加载配置
使用 Apache 服务器
Apache 的配置通常通过 .htaccess 文件实现,非常方便,尤其适合虚拟主机用户。
-
进入你的网站根目录,也就是
www.yourdomain.com对应的文件夹。 -
编辑或创建
.htaccess文件,在文件末尾添加以下内容:
(图片来源网络,侵删)# 开启重写引擎 RewriteEngine On # 定义你的主域名 RewriteBase / # 子域名 blog.yourdomain.com 的重写规则 # 当访问 blog.yourdomain.com 时,将请求重写到 /blog/ 目录下 RewriteCond %{HTTP_HOST} ^blog\.yourdomain\.com [NC] RewriteRule ^(.*)$ /blog/$1 [L]代码解释:
RewriteEngine On: 开启 URL 重写功能。RewriteCond %{HTTP_HOST} ...: 这是一个条件,检查请求的域名是否是blog.yourdomain.com([NC]表示不区分大小写)。RewriteRule ^(.*)$ /blog/$1 [L]: 如果条件满足,就将所有请求(^(.*)$匹配任何路径)重写到/blog/目录下,并保留原始路径($1)。[L]表示这是最后一条规则,匹配后不再执行后续规则。
-
保存
.htaccess文件,Apache 通常会自动检测并应用配置更改,无需重启。
第二步:DedeCMS 后台配置
服务器配置完成后,你需要告诉 DedeCMS 这个子域名是它的一部分,这样才能正确处理登录、cookie 等问题。
-
登录 DedeCMS 后台:
www.yourdomain.com/dede/ -
进入“系统” -> “系统基本参数”。
-
找到“站点设置”选项卡。
-
修改以下参数:
- 网站主页链接:确保这里填写的是你的主域名,
http://www.yourdomain.com/。 - 站点根网址:填写你的主域名,
http://www.yourdomain.com/。 - 附件目录相对路径:如果附件在子目录,可能需要调整,但通常保持
/uploads即可。
- 网站主页链接:确保这里填写的是你的主域名,
-
最关键的一步:进入“核心设置”。
-
在“站点域名”这一项中,用英文逗号 隔开,添加你的主域名和子域名。
www.yourdomain.com, blog.yourdomain.com这样做的目的是,DedeCMS 在生成链接、验证用户登录状态时,会认为这两个域名都是同一个站点,从而避免 cookie 域名不匹配导致的问题。
-
保存设置。
第三步:域名解析
最后一步,在你的域名注册商(如阿里云、腾讯云、GoDaddy 等)的控制面板中,添加一条 DNS 记录。
-
登录你的域名管理后台。
-
找到 DNS 解析管理。
-
添加一条 A 记录 或 CNAME 记录。
-
推荐使用 A 记录:
- 主机记录:
blog(表示blog.yourdomain.com) - 记录类型:
A - 记录值: 你服务器的 IP 地址(
45.67.89)
- 主机记录:
-
也可以使用 CNAME 记录:
- 主机记录:
blog - 记录类型:
CNAME - 记录值:
www.yourdomain.com(指向你的主域名)
- 主机记录:
-
-
保存 DNS 记录,DNS 生效通常需要几分钟到几小时不等。
总结与注意事项
- 顺序:建议先完成 域名解析,然后是 服务器配置,最后是 DedeCMS 后台配置,因为 DNS 生效需要时间,提前解析可以确保后续步骤测试时域名已经可用。
- 虚拟主机用户:如果你使用的是虚拟主机,可能无法直接修改 Nginx 或 Apache 的主配置文件,这时,
.htaccess方案是你的最佳选择,很多虚拟主机面板也提供了“子域名绑定”功能,你只需要在面板里将blog.yourdomain.com绑定到blog文件夹即可,这本质上就是在后台帮你生成了类似上面的.htaccess规则。 - SSL 证书 (HTTPS):如果你的主站启用了 HTTPS,子域名最好也配置一个 SSL 证书,可以使用 Let's Encrypt 免费证书,并在 Nginx/Apache 配置中为
blog.yourdomain.com单独开启443端口和ssl配置。 - 测试:完成所有步骤后,清除浏览器缓存,分别访问
www.yourdomain.com和blog.yourdomain.com,确保它们都正常工作,并且登录状态在两个域名之间是互通的(因为你在后台设置了站点域名)。 - 路径问题:确保子目录(如
/blog)下的文件结构和权限与主站一致,特别是/data和/dede等核心目录,子目录通常需要指向主站的这些目录,如果你的子目录是一个完全独立的站点,则配置方式会有所不同。
