多站点管理
CarefreeCMS 支持在一套系统中管理多个独立站点,实现统一后台、数据隔离、灵活配置的多站点架构。
功能特点
- 🌐 统一后台管理多个站点
- 🔒 站点间数据完全隔离
- 🎨 每个站点独立模板主题
- 🌍 支持独立域名、子域名、目录绑定
- 👥 灵活的站点管理员权限
- ⚙️ 站点级别的独立配置
- 📊 站点数据统计和监控
- 🔄 站点间内容快速复制
站点类型
主站
- 系统的主要站点
- 通常绑定主域名
- 具有最高管理权限
- 可以管理所有子站
子站
- 从属于主站的站点
- 可以是不同的频道或分站
- 共享主站的部分资源
- 可以有独立域名
独立站
- 完全独立的站点
- 独立的域名和内容
- 独立的管理权限
- 适合品牌矩阵管理
创建站点
第一步:添加站点
- 进入 系统管理 → 站点管理
- 点击 新增站点 按钮
- 填写站点基本信息
基本信息
站点代码: tech_blog (唯一标识,字母和下划线)
站点名称: 科技博客
站点类型: 子站 / 独立站
父站点: 主站 (如果是子站)
状态: 启用
排序: 0
站点描述
站点简介: 专注于前沿科技资讯和技术分享
关键词: 科技,技术,博客
联系方式: tech@example.com
第二步:配置域名
域名绑定类型
独立域名
域名: tech.example.com
适用场景: 完全独立的站点
SEO友好: ★★★★★
子域名
子域名: tech
主域名: example.com
完整域名: tech.example.com
适用场景: 频道站、分站
SEO友好: ★★★★☆
目录方式
目录: /tech
完整路径: example.com/tech
适用场景: 小型站点、专题站
SEO友好: ★★★☆☆
提示
推荐使用独立域名或子域名方式,SEO 效果更好
第三步:选择模板
选择模板主题
- 从已安装的模板中选择
- 或上传新模板
- 每个站点可以使用不同的模板
模板配置
首页模板: index.html
文章列表模板: category.html
文章详情模板: article.html
单页模板: page.html
第四步:配置参数
SEO 配置
SEO标题: 科技博客 - 分享前沿科技资讯
SEO关键词: 科技,技术,人工智能,前端开发
SEO描述: 专注于前沿科技资讯和技术分享的专业博客平台
存储配置
存储类型: 本地存储 / OSS / COS
上传路径: /uploads/tech/
CDN域名: cdn.example.com (可选)
其他配置
是否开启回收站: 是
是否允许副分类: 是
前台评论开关: 是
内容审核: 否
第五步:分配管理员
点击 分配管理员 按钮
选择用户并设置角色:
- 站点管理员:完全管理权限
- 编辑:内容编辑权限
- 作者:仅能管理自己的内容
设置权限范围:
- 可管理的模块
- 可操作的功能
站点管理
切换站点
方式一:顶部切换
- 点击顶部站点选择器
- 选择要管理的站点
- 自动刷新到该站点的内容
方式二:列表切换
- 在站点管理列表
- 点击 切换 按钮
- 进入该站点管理界面
提示
超级管理员可以切换到任何站点,普通管理员只能切换到有权限的站点
编辑站点
- 在站点列表点击 编辑
- 修改站点信息
- 保存更改
支持修改的内容:
- 基本信息
- 域名绑定
- 模板主题
- SEO 配置
- 存储配置
删除站点
警告
删除站点会删除该站点的所有内容和配置,此操作不可恢复!
删除前确认:
- [ ] 已备份重要数据
- [ ] 已通知相关管理员
- [ ] 已解除域名绑定
- [ ] 已清理相关资源
删除步骤:
- 点击 删除 按钮
- 输入站点代码确认
- 点击 确定删除
禁用/启用站点
禁用站点
- 前台无法访问
- 后台可以管理
- 可以重新启用
启用站点
- 恢复前台访问
- 所有功能正常
站点数据隔离
内容隔离
每个站点的内容完全独立:
- 文章
- 分类
- 标签
- 单页
- 专题
用户隔离
前台用户
- 每个站点有独立的用户系统
- 用户只能在所属站点登录
- 积分、等级独立计算
后台用户
- 可以跨站点管理(根据权限)
- 操作日志记录具体站点
- 权限精确到站点级别
配置隔离
每个站点独立配置:
- 网站信息
- SEO 设置
- 上传配置
- 邮件配置
- 支付配置
域名配置
Nginx 配置
独立域名配置
# 主站
server {
listen 80;
server_name www.example.com;
root /var/www/cms/backend/html/main;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
# 子站 - 独立域名
server {
listen 80;
server_name tech.example.com;
root /var/www/cms/backend/html/tech;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
子域名配置
# 使用通配符域名
server {
listen 80;
server_name *.example.com;
root /var/www/cms/backend/html;
index index.html;
location / {
# 根据子域名自动路由
set $site "";
if ($host ~* ^(.+)\.example\.com$) {
set $site $1;
}
try_files /$site$uri /$site$uri/ =404;
}
}
目录方式配置
server {
listen 80;
server_name www.example.com;
root /var/www/cms/backend/html;
index index.html;
# 主站
location / {
try_files /main$uri /main$uri/ =404;
}
# 子站目录
location /tech {
alias /var/www/cms/backend/html/tech;
try_files $uri $uri/ =404;
}
}
Apache 配置
虚拟主机配置
# 主站
<VirtualHost *:80>
ServerName www.example.com
DocumentRoot /var/www/cms/backend/html/main
<Directory /var/www/cms/backend/html/main>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
# 子站
<VirtualHost *:80>
ServerName tech.example.com
DocumentRoot /var/www/cms/backend/html/tech
<Directory /var/www/cms/backend/html/tech>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
站点复制
复制站点配置
快速创建相似站点:
- 选择源站点
- 点击 复制配置
- 修改新站点信息
- 保存创建
复制的内容:
- ✅ 模板主题
- ✅ SEO 配置
- ✅ 上传设置
- ✅ 分类结构
- ❌ 文章内容(可选)
批量操作
批量启用/禁用
- 勾选多个站点
- 选择批量操作
- 确认执行
批量修改配置
- 选择站点
- 设置统一配置
- 应用到所有选中站点
站点统计
数据概览
在站点列表查看:
- 文章数量
- 分类数量
- 用户数量
- 访问量
- 存储空间
详细报表
点击 统计 查看:
- 每日访问趋势
- 热门文章排行
- 内容发布统计
- 用户活跃度
- 搜索关键词
站点迁移
导出站点
选择要导出的站点
点击 导出 按钮
选择导出内容:
- 站点配置
- 文章内容
- 媒体文件
- 用户数据
下载导出包
导入站点
点击 导入站点
上传导出包
配置导入选项:
- 是否覆盖现有内容
- 用户处理方式
- 媒体文件处理
开始导入
最佳实践
站点规划
场景一:企业集团
主站(企业官网)
├── 产品站(独立域名)
├── 新闻站(子域名)
└── 帮助中心(目录)
场景二:内容矩阵
主站(综合资讯)
├── 科技频道
├── 财经频道
├── 娱乐频道
└── 体育频道
场景三:地区分站
主站(全国站)
├── 北京站
├── 上海站
├── 广州站
└── 深圳站
性能优化
数据库优化
- 为 site_id 字段添加索引
- 定期清理无用数据
- 使用分表策略
缓存策略
- 按站点分组缓存
- 站点切换时清除缓存
- 使用 Redis 标签缓存
静态化
- 各站点独立生成静态页
- 分别部署到不同服务器
- 使用 CDN 加速
安全建议
权限控制
- 严格控制跨站点权限
- 定期审查管理员权限
- 记录跨站点操作日志
数据隔离
- 确保站点数据完全隔离
- API 请求验证站点归属
- 防止数据泄露
域名安全
- 配置 SSL 证书
- 设置域名白名单
- 防止域名劫持
常见问题
如何设置站点默认首页?
在站点配置中设置:
首页模板: index.html
默认显示: 文章列表 / 自定义页面
不同站点可以使用相同域名吗?
不可以。每个站点必须有独立的域名或路径。
如何让用户在多个站点通用?
目前站点用户是隔离的。如需通用,可以:
- 开发单点登录(SSO)
- 使用第三方登录(OAuth)
- 同步用户数据
站点数量有限制吗?
理论上没有限制,但建议:
- 小型服务器:< 10 个站点
- 中型服务器:< 50 个站点
- 大型服务器:> 50 个站点
如何备份特定站点?
使用站点导出功能:
# 命令行备份
php think site:export --site=tech --output=backup/tech.zip
