帝国CMS多访问端子域名Cookie跨域登录同步完整配置
时间:2026-08-13 22:31:11 来源:aliz.cn 作者:SKY 阅读:
原创实测|适用于帝国 CMS8.0 多访问端(多站点)子域名部署场景。 场景示例:主站www.aliz.cn、英文站en.aliz.cn,两套站点共用同一套会员数据库,默认登录之后,子域名之间登录状态不同步,登录 A 域名,B 域名依旧显示未登录,根源是 Cookie 作用域限制。
原理说明
PHP Cookie 默认只在当前域名生效;
www.aliz.cn 设置的 Cookie,默认不会带到 en.aliz.cn。 修改帝国 CMS 全局 cookie 域名配置,把 cookie 域设置为根域名 .aliz.cn,所有子域名共享登录 Cookie,实现会员登录状态互通。
⚠️注意:仅适用于同一根域名下子域名,例如www.aliz.cn、en.aliz.cn; 如果是完全不同的一级域名,例如aliz.com和aliz.cn,无法靠 cookie 域实现登录同步,需要 UCenter 统一会员中心。
一、修改核心配置文件 config.php
文件路径:
/e/config/config.php找到配置项:
php
运行
$ecms_cookie_domain = '';
修改为你的根域名,前面必须带上英文小数点
.php
运行
//aliz.cn示例
$ecms_cookie_domain = '.aliz.cn';
完整示例片段:
php
运行
//COOKIE作用域 多访问端子域名跨域登录
$ecms_cookie_domain = '.aliz.cn';
$ecms_cookie_path = '/';
$ecms_cookie_secure = 1; //HTTPS站点开启为1,http站点改为0
参数解释
$ecms_cookie_domain:根域名,开头.代表所有子域名全部生效$ecms_cookie_path:/代表网站全站路径$ecms_cookie_secure:网站是 HTTPS 写1;纯 HTTP 网站必须写0,否则 Cookie 设置失败。
重要:修改保存编码 UTF‑8 无 BOM。
二、会员登录、退出跳转适配(多访问端)
1、登录成功跳转
多访问端环境,登录成功建议跳转到当前访问端会员中心地址。 模板登录表单 action 地址不要写死域名,使用系统变量:
html
预览
<form action="[!--newsurl--]e/member/login.php" method="post">
2、退出登录模板
退出链接,使用当前访问端地址:
html
预览
<a href="[!--newsurl--]e/member/logout.php">退出登录</a>
不要写死www.aliz.cn,切换语言访问端时,[!--newsurl--]自动输出当前站点域名。
三、清除旧 Cookie 缓存测试步骤
- 修改完
configconfig.php; - 浏览器全部清除网站 Cookie,不要保留旧会话 cookie;
- 在
www.aliz.cn登录会员; - 打开新标签访问
en.aliz.cn,检查是否已经处于登录状态; - 测试退出:任意站点点击退出,所有子域名同步登出。
四、高频问题排查
1、修改之后依旧不能同步登录
$ecms_cookie_secure设置错误 HTTPS 站点填 1,HTTP 站点填 0;填错会直接无法写入 cookie。- 域名格式错误:必须是
.aliz.cn,不要写成aliz.cn(缺少前面小数点),不要写完整子域名www.aliz.cn。 - 浏览器没有删除旧 Cookie,旧的 cookie 域还是旧配置,必须清除浏览器 Cookie 再测试。
- CDN 反向代理场景:CDN 如果缓存 Set‑Cookie 响应头,会导致 cookie 写不进去,CDN 需要忽略缓存登录、会员相关页面。
2、HTTPS 站点设置 secure=1 后,http 访问网站登录失效
secure=1 的 Cookie,只有 HTTPS 协议下才会发送; 网站全站强制 HTTPS,Nginx 把 http 全部 301 跳转 https,才可以开启 secure=1。 如果网站同时支持 http 和 https,
$ecms_cookie_secure = 0。
3、多访问端子目录模式(www.aliz.cn/en/)需要配置吗?
子目录模式不需要修改
ecms_cookie_domain,同一个域名天然 cookie 互通。只有子域名模式才需要配置。
4、后台管理员登录是否同步?
这个配置只针对前台会员;帝国 CMS 后台管理员 cookie 独立,不受该参数控制,后台无法子域名同步登录。
五、Nginx 配套建议(多访问端子域名)
nginx
server {
listen 443 ssl;
server_name www.aliz.cn en.aliz.cn;
root 你的网站根目录;
# 重要:代理/CDN环境,传递真实HTTPS标记
proxy_set_header X‑Forwarded‑Proto $scheme;
}
六、边界说明
- 根域名不同,例如
aliz.cn和aliz.com,本方案无效,需要 UCenter 会员统一接口。 - 升级帝国 CMS 版本,
/e/config/configconfig.php不会被覆盖,配置永久保留。 - 开启 cookie 跨域之后,同根域名下所有子域名都可以读取登录 cookie,属于安全可控。
七、配套 hreflang 完整头部模板代码(复制直接用)
放到公共模板
<head>标签内部,适配多访问端子域名:html
预览
<link rel="alternate" hreflang="zh‑CN" href="https://www.aliz.cn[!--selfurl--]" />
<link rel="alternate" hreflang="en" href="https://en.aliz.cn[!--selfurl--]" />
<link rel="canonical" href="[!--selfurl--]">
canonical 标签防止多语言页面产生重复收录问题。
本文配套模板、静态源码可前往艾立兹素材库alisucai.com下载
发表评论
共有0条评论