织梦分站数据独立互不干扰设置

多城市或多分站场景下,最头疼的问题是数据互相干扰:一个分站的内容跑到另一个分站,或一个分站的设置影响全局。本文讲解如何让各分站数据真正独立、互不干扰。

一、数据干扰的常见表现

二、数据隔离的几个层面

1. 内容层隔离

每个分站对应独立栏目(栏目树),内容按栏目归属。调用时严格限定typeid为该分站栏目ID,避免跨站调用。

2. 字段层隔离

若共用内容池,通过地区/分站字段区分。所有调用都加该字段过滤,确保只返回本分站数据。

3. 配置层隔离

分站的TDK、联系方式、banner等不写入全局配置,而是存入分站专属配置表或单页,按城市读取。

三、栏目隔离实现

为每个分站建立独立栏目树,如:

主站
├─ 北京分站(栏目ID 10)
│   ├─ 北京新闻(11)
│   └─ 北京产品(12)
├─ 上海分站(栏目ID 20)
│   ├─ 上海新闻(21)
│   └─ 上海产品(22)

分站首页只调用本栏目树下数据。使用arclist时指定typeid,或通过typeid='top'限定顶级栏目。

四、共用内容池的字段隔离

若选择共用栏目,附加表增加siteid字段标记归属分站。调用时强制拼接:

$where="siteid=".$currentSite;
$sql="SELECT * FROM dede_archives a LEFT JOIN dede_addoninfo b ON a.id=b.aid WHERE $where";

关键是在所有调用入口统一加入siteid过滤,任何遗漏都会导致数据串站。

五、管理员权限隔离

1. 角色按分站划分

在织梦后台为每个分站创建独立管理员角色,通过"栏目权限"限制其只能管理本分站栏目。其他分站栏目对该管理员不可见、不可编辑。

2. 文档权限

开启文档权限控制,确保分站管理员只能发布、修改本分站文档,防止误操作其他分站内容。

六、静态生成隔离

各分站静态文件分目录存放,避免覆盖。可在生成逻辑中按城市写入不同目录:

/html/bj/...
/html/sh/...

对应URL规则也按城市区分,如bj.example.com/news/1.html读取/html/bj/news/1.html

七、缓存与配置隔离

八、设置落地建议

建议在搭建分站之初就确定隔离方案,优先选择"栏目隔离+权限隔离+生成目录隔离"的组合,这是最稳妥的物理隔离方式。共用内容池方案虽省事,但任何调用遗漏都会串站,适合开发规范严格的团队。无论哪种方案,都应在上线前用多分站数据交叉验证,确认无串站后再对外开放。