织梦多城市分站二级域名方案

多城市分站常用于本地化站点矩阵,通过二级域名(如bj.example.comsh.example.com)实现各城市独立首页与内容。本文给出一套基于织梦的二级域名分站方案。

一、方案整体思路

核心是:泛域名解析指向同一套织梦程序 → 程序识别当前二级域名 → 切换到对应城市栏目 → 渲染该城市首页与列表。内容上,每个城市可作为独立栏目,也可共用内容池按地区字段过滤。

二、域名解析与服务器配置

1. 泛域名解析

在DNS添加*.example.com解析到服务器IP。同时主域名example.com正常解析。

2. 服务器绑定

Nginx/Apache将*.example.comexample.com绑定到同一站点目录。Nginx示例:

server{
  server_name ~^(?[a-z]+)\.example\.com$ example.com;
  root /var/www/dede;
  index index.php;
}

三、城市识别与栏目映射

在公共文件(如common.inc.php之后)中,根据$_SERVER['HTTP_HOST']提取城市标识:

preg_match('/^([a-z]+)\.example\.com$/', $_SERVER['HTTP_HOST'], $m);
$GLOBALS['city']=$m[1] ?? '';  // bj sh gz ...

建立城市标识与栏目ID的映射表,如bj=> 10sh=> 11。模板中根据$GLOBALS['city']调用对应栏目数据。

四、两种数据组织方式

1. 每城市独立栏目

每个城市建一个栏目,内容分别录入。优点是数据物理隔离,缺点是内容需重复维护。适合各城市内容差异大的场景。

2. 共用内容池+地区字段

所有内容放同一栏目,附加地区字段。分站首页根据城市标识筛选该地区内容。优点是维护简单,缺点是数据量大时筛选查询压力增加。

五、模板适配

分站首页模板读取$GLOBALS['city'],调用对应城市栏目或筛选该地区内容:

$cityid=$cityMap[$GLOBALS['city']];
{dede:arclist typeid=$cityid row='10'}
  ...
{/dede:arclist}

页面顶部展示当前城市名,并提供城市切换导航,链接到其他二级域名。

六、SEO与配置要点

七、注意事项

二级域名分站涉及泛解析与内核识别,改动较大。建议先在测试环境验证域名识别与栏目切换,再上线。生成静态时,需修改生成逻辑按城市分别生成,否则首页会互相覆盖。缓存策略也要按城市维度隔离。

八、方案落地建议

建议从2—3个重点城市起步,跑通域名解析、城市识别、模板切换、静态生成全链路后,再批量铺开。运营上聚焦内容差异化的城市,避免大量空壳分站被搜索引擎降权。条件成熟时,可结合分站数据独立化方案,让各城市分站在内容与流量上真正独立运营。