首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >子域名适配方案

子域名适配方案

原创
作者头像
lpp31
发布2026-04-21 14:44:55
发布2026-04-21 14:44:55
1320
举报
文章被收录于专栏:前端小羊前端小羊

子域名适配测试方案

背景

开发者社区新增了独立子域名访问方式,用户现在可以通过两种路径访问社区1:

  • 旧路径https://cloud.tencent.com/developer(及 .cn / .com.cn 后缀)
  • 新子域名https://developer.cloud.tencent.com(及 .cn / .com.cn 后缀)

改造涉及三个项目,各自独立改动,需分别验证:

项目

说明

旧路径前缀

新子域名

qcloud-developer

开发者社区主站

cloud.tencent.com/developer

developer.cloud.tencent.com

qcloud-community

新版社区

cloud.tencent.com/developer

developer.cloud.tencent.com

qcloud-competition

竞赛子站

cloud.tencent.com/competition

competition.cloud.tencent.com

测试策略:以「机制 × 项目」为主轴,每种机制在每个项目下各选代表页面验证,不可用一个项目的结果代替另一个项目。

以下测试如无特别说明,均以 .com 后缀为例,.cn.com.cn 后缀在「跨后缀一致性」章节单独回归。


一、六个入口冒烟

最基础的验证:六个入口都能正常打开,页面不报错。

访问地址

预期结果

1

https://cloud.tencent.com/developer

正常打开社区首页(qcloud-developer 或 qcloud-community)

2

https://cloud.tencent.cn/developer

正常打开社区首页

3

https://cloud.tencent.com.cn/developer

正常打开社区首页

4

https://developer.cloud.tencent.com

正常打开社区首页

5

https://developer.cloud.tencent.cn

正常打开社区首页

6

https://developer.cloud.tencent.com.cn

正常打开社区首页

7

https://cloud.tencent.com/competition

正常打开竞赛首页

8

https://competition.cloud.tencent.com

正常打开竞赛首页

超链接

超链接2

超链接3

超链接4

超链接5

超链接6

超链接7

超链接8

超链接9


二、机制一:服务端渲染链接(SSR 生成的 href)

机制说明:页面 HTML 在服务端生成时,链接 href 就已经写入了正确的域名。三个项目各自独立处理,需分别验证。

验证方法:打开页面,右键「查看网页源代码」,搜索 href=,检查链接中的域名。

qcloud-developer

访问方式

页面地址

检查内容

预期结果

1

新子域名

developer.cloud.tencent.com/salon/salon-{沙龙ID}

源码中报名按钮、推荐沙龙、分享链接的 href

应含 developer.cloud.tencent.com,不出现 cloud.tencent.com/developer

2

旧路径

cloud.tencent.com/developer/salon/salon-{沙龙ID}

同上

应含 cloud.tencent.com/developer

qcloud-community

访问方式

页面地址

检查内容

预期结果

1

新子域名

developer.cloud.tencent.com/article/{文章ID}

源码中推荐文章、作者主页、标签链接的 href

应含 developer.cloud.tencent.com

2

旧路径

cloud.tencent.com/developer/article/{文章ID}

同上

应含 cloud.tencent.com/developer

qcloud-competition

访问方式

页面地址

检查内容

预期结果

1

新子域名

competition.cloud.tencent.com/introduction/{竞赛ID}

源码中各 Tab 链接、返回首页链接的 href

应含 competition.cloud.tencent.com

2

旧路径

cloud.tencent.com/competition/introduction/{竞赛ID}

同上

应含 cloud.tencent.com/competition


三、机制二:客户端动态链接跟随(GlobalListener / handleMouseOver)

机制说明:用户鼠标悬停任意 <a> 标签时,JS 实时把 href 改写为当前访问域名,是全局兜底策略。三个项目各自实现,需分别验证。

验证方法:将鼠标悬停到链接上,观察浏览器左下角状态栏显示的 URL,或右键链接查看 href。

3.1 导航栏链接

qcloud-developer

访问方式

页面地址

验证操作

预期结果

1

新子域名

developer.cloud.tencent.com

悬停顶部导航各菜单项(学习、活动、专区等)

href 显示 developer.cloud.tencent.com,不出现旧路径

2

旧路径

cloud.tencent.com/developer

悬停顶部导航各菜单项

href 显示 cloud.tencent.com/developer,不出现新子域名

qcloud-community

访问方式

页面地址

验证操作

预期结果

1

新子域名

developer.cloud.tencent.com

悬停顶部导航各菜单项

href 显示 developer.cloud.tencent.com,不出现旧路径

2

旧路径

cloud.tencent.com/developer

悬停顶部导航各菜单项

href 显示 cloud.tencent.com/developer,不出现新子域名

qcloud-competition

访问方式

页面地址

验证操作

预期结果

1

新子域名

competition.cloud.tencent.com

悬停竞赛首页导航链接

href 显示 competition.cloud.tencent.com

2

旧路径

cloud.tencent.com/competition

悬停竞赛首页导航链接

href 显示 cloud.tencent.com/competition

3.2 底部菜单链接

底部菜单由后台配置,链接硬编码了旧域名,GlobalListener 在悬停时统一改写。

qcloud-developer

访问方式

页面地址

验证操作

预期结果

1

新子域名

developer.cloud.tencent.com

悬停底部菜单各链接(技术文章、技术问答等)

href 显示 developer.cloud.tencent.com,不出现旧路径

qcloud-community

访问方式

页面地址

验证操作

预期结果

1

新子域名

developer.cloud.tencent.com

悬停底部菜单各链接

href 显示 developer.cloud.tencent.com,不出现旧路径

3.3 官网链接后缀跟随

页面中硬编码了官网链接(如 cloud.tencent.com/product/cvm 等),GlobalListener 同样改写域名后缀。

qcloud-developer

访问方式

页面地址

验证操作

预期结果

1

.cn 后缀

developer.cloud.tencent.cn

悬停底部「热门产品」中的云服务器、域名注册等链接

href 为 cloud.tencent.cn/product/xxx,不出现 cloud.tencent.com

2

.com.cn 后缀

developer.cloud.tencent.com.cn

同上

href 为 cloud.tencent.com.cn/product/xxx

qcloud-community

访问方式

页面地址

验证操作

预期结果

1

.cn 后缀

developer.cloud.tencent.cn

悬停底部「热门产品」中的官网链接

href 为 cloud.tencent.cn/product/xxx

2

.com.cn 后缀

developer.cloud.tencent.com.cn

同上

href 为 cloud.tencent.com.cn/product/xxx

3.4 文章 / 问答正文内链

找一篇正文中含有其他社区链接的内容(可搜索含 cloud.tencent.com/developer 的文章或回答)

访问方式

页面地址

验证操作

预期结果

1

新子域名

developer.cloud.tencent.com/ask/{问题ID}(回答正文中含社区链接)

悬停正文中的内链

href 改写为新子域名

2

新子域名

developer.cloud.tencent.com/article/{文章ID}(正文中含社区链接)

悬停正文中的内链

href 改写为新子域名

3.5 内容列表卡片链接

qcloud-developer

访问方式

页面地址

验证操作

预期结果

1

新子域名

https://developer.cloud.tencent.com/salon/activities

悬停沙龙列表中每条链接

href 为新子域名

qcloud-community

访问方式

页面地址

验证操作

预期结果

1

新子域名

https://developer.cloud.tencent.com

悬停首页文章卡片、问答卡片

href 为新子域名

qcloud-competition

访问方式

页面地址

验证操作

预期结果

1

新子域名

https://developer.cloud.tencent.com/competition

悬停首页竞赛列表中的链接

href 为新子域名


四、机制三:JS 直接跳转(GlobalListener 无法覆盖的场景)

机制说明:以下场景通过 location.hreflocation.replace()window.open() 等方式直接跳转,不经过 GlobalListener,需代码中单独处理域名,是最容易出 bug 的地方。

4.1 登录跳转(高风险)

登录跳转地址 https://cloud.tencent.com/login?s_url=${backUrl} 域名硬编码,三个项目需各自验证。

qcloud-developer

访问方式

页面地址

验证操作

预期结果

1

新子域名(.com)

developer.cloud.tencent.com/salon/salon-{沙龙ID},未登录

点击「登录」,完成登录

跳回原页面,URL 仍为 developer.cloud.tencent.com

2

新子域名(.cn)

developer.cloud.tencent.cn,未登录

点击「登录」,完成登录

跳回 .cn 后缀页面

3

新子域名(.com.cn)

developer.cloud.tencent.com.cn,未登录

点击「登录」,完成登录

跳回 .com.cn 后缀页面

qcloud-community

访问方式

页面地址

验证操作

预期结果

1

新子域名(.com)

developer.cloud.tencent.com/article/{文章ID},未登录

点击「登录」,完成登录

跳回原页面,URL 仍为 developer.cloud.tencent.com

2

新子域名(.cn)

developer.cloud.tencent.cn,未登录

点击「登录」,完成登录

跳回 .cn 后缀页面

3

新子域名(.com.cn)

developer.cloud.tencent.com.cn,未登录

点击「登录」,完成登录

跳回 .com.cn 后缀页面

qcloud-competition

访问方式

页面地址

验证操作

预期结果

1

新子域名(.com)

competition.cloud.tencent.com,未登录

点击「登录」,完成登录

跳回原页面,URL 仍为 competition.cloud.tencent.com

2

新子域名(.cn)

competition.cloud.tencent.cn,未登录

点击「登录」,完成登录

跳回 .cn 后缀页面

4.2 发布内容后跳转

仅 qcloud-community 涉及发布功能(qcloud-developer 文章页已迁移)。

qcloud-community

场景

页面地址

预期结果

1

新子域名下发布文章

developer.cloud.tencent.com/article/write-new

发布成功后跳转到文章详情页,URL 为新子域名

2

新子域名下提问

developer.cloud.tencent.com/ask(点击「提问」)

提交成功后跳转到问题详情页,URL 为新子域名

3

新子域名下发布视频

developer.cloud.tencent.com/creator/publishVideo

发布成功后跳转 URL 为新子域名

4

旧路径下发布文章

cloud.tencent.com/developer/article/write-new

发布成功后跳转 URL 为旧路径格式

4.3 创作者中心内部跳转

仅 qcloud-community 涉及,侧边栏导航、Tab 切换等使用 location.href 跳转。

qcloud-community

场景

页面地址

验证操作

预期结果

1

首页 Tab 切换

developer.cloud.tencent.com

点击首页不同分类 Tab(推荐、问答、专栏等)

Tab 切换后 URL 仍为新子域名

2

切换「我的提问 / 我的回答」Tab

developer.cloud.tencent.com/creator/ask

点击切换 Tab

Tab 切换后 URL 仍为新子域名

3

侧边栏点击「写文章」(新窗口)

developer.cloud.tencent.com/creator

点击「写文章」

新窗口打开 developer.cloud.tencent.com/article/write-new

4

视频管理页点击「编辑视频」

developer.cloud.tencent.com/creator/videos

点击编辑按钮

跳转到 developer.cloud.tencent.com/creator/editVideo?vlogId=xxx

4.4 快速提问发布后跳转

仅 qcloud-developer 涉及,发布后用 window.open() 打开新窗口。

qcloud-developer

场景

页面地址

验证操作

预期结果

1

新子域名下快速提问

developer.cloud.tencent.com/ask/quick

提交一个问题

新窗口打开的问题详情页 URL 为新子域名

4.5 控制台跳转

仅 qcloud-developer 涉及,使用 window.open('https://console.${location.host}/...') 动态拼接,理论上已正确适配,重点验证 .cn / .com.cn

qcloud-developer

场景

页面地址

验证操作

预期结果

1

沙龙签到页

developer.cloud.tencent.cn/salon/salon-{沙龙ID}/signup

点击「前往控制台」

新窗口打开 console.cloud.tencent.cn

2

用户通知设置页

developer.cloud.tencent.cn/user/settings/notification

点击「前往控制台」

新窗口打开 console.cloud.tencent.cn

3

用户通知设置页

developer.cloud.tencent.com.cn/user/settings/notification

点击「前往控制台」

新窗口打开 console.cloud.tencent.com.cn


五、机制四:分享与海报链接生成

机制说明:分享链接、海报二维码的 URL 通过字符串拼接生成,不经过 GlobalListener,需代码单独处理域名。

qcloud-developer

场景

页面地址

预期结果

1

沙龙分享海报

developer.cloud.tencent.com/salon/sharing/salon-{沙龙ID}

海报中链接 / 二维码指向新子域名

2

旧路径下沙龙分享

cloud.tencent.com/developer/salon/sharing/salon-{沙龙ID}

海报中链接为旧路径格式

qcloud-community

场景

页面地址

预期结果

1

复制文章分享链接

developer.cloud.tencent.com/article/{文章ID}

点击分享,复制的链接域名为新子域名

2

生成文章海报

developer.cloud.tencent.com/poster/article/{文章ID}

海报中二维码指向新子域名

3

微信分享

developer.cloud.tencent.com/article/{文章ID}

好友收到的链接为新子域名

4

旧路径下分享

cloud.tencent.com/developer/article/{文章ID}

分享链接域名为旧路径格式


六、机制五:登录态(Cookie domain)

机制说明:登录 Cookie 的 domain 属性决定登录态能否在新旧域名间共享。

场景

验证操作

预期结果

1

旧路径登录后打开新子域名

cloud.tencent.com/developer 登录后,新标签打开 developer.cloud.tencent.com

无需重新登录

2

新子域名登录后打开旧路径

developer.cloud.tencent.com 登录后,新标签打开 cloud.tencent.com/developer

无需重新登录

3

新子域名下刷新页面

登录后刷新 developer.cloud.tencent.com

登录态保持,不丢失

4

退出登录

新子域名下点击退出

新旧域名下均退出


七、机制六:SEO canonical 标签

机制说明:服务端根据请求域名输出 canonical 标签。三个项目各自实现,需分别验证。

验证方法:右键查看网页源代码,搜索 canonical

qcloud-developer

访问方式

页面地址

预期结果

1

新子域名

developer.cloud.tencent.com/salon/salon-{沙龙ID}

<link rel="canonical"> href 为新子域名格式

2

旧路径

cloud.tencent.com/developer/salon/salon-{沙龙ID}

<link rel="canonical"> href 为旧路径格式

qcloud-community

访问方式

页面地址

预期结果

1

新子域名

developer.cloud.tencent.com/article/{文章ID}

<link rel="canonical"> href 为新子域名格式

2

旧路径

cloud.tencent.com/developer/article/{文章ID}

<link rel="canonical"> href 为旧路径格式

3

新子域名

developer.cloud.tencent.com/ask/{问题ID}

<link rel="canonical"> href 为新子域名格式

qcloud-competition

访问方式

页面地址

预期结果

1

新子域名

competition.cloud.tencent.com/introduction/{竞赛ID}

<link rel="canonical"> href 为新子域名格式

2

旧路径

cloud.tencent.com/competition/introduction/{竞赛ID}

<link rel="canonical"> href 为旧路径格式


八、跨项目跳转

机制说明:从开发者社区跳转到竞赛子站,各自域名规则应保持,不出现混用。

场景

页面地址

验证操作

预期结果

1

社区跳转竞赛(新子域名)

developer.cloud.tencent.com

悬停 / 点击导航「竞赛」入口

跳转到 competition.cloud.tencent.com

2

社区跳转竞赛(.cn)

developer.cloud.tencent.cn

点击导航「竞赛」入口

跳转到 competition.cloud.tencent.cn

3

竞赛跳回社区

competition.cloud.tencent.com 竞赛详情页

点击页面中的社区相关链接

跳转到 developer.cloud.tencent.com


九、跨后缀一致性(.cn / .com.cn)

每个项目在 .cn.com.cn 后缀下均需单独回归,重点回归高风险场景。

qcloud-developer

后缀

机制

页面地址

验证操作

1

.cn

入口冒烟

developer.cloud.tencent.cn

正常打开首页

2

.com.cn

入口冒烟

developer.cloud.tencent.com.cn

正常打开首页

3

.cn

链接跟随

developer.cloud.tencent.cn

悬停导航链接,href 为 .cn 后缀

4

.com.cn

链接跟随

developer.cloud.tencent.com.cn

悬停导航链接,href 为 .com.cn 后缀

5

.cn

登录跳转

developer.cloud.tencent.cn,未登录

登录后回到 .cn 后缀页面

6

.com.cn

登录跳转

developer.cloud.tencent.com.cn,未登录

登录后回到 .com.cn 后缀页面

qcloud-community

后缀

机制

页面地址

验证操作

1

.cn

入口冒烟

developer.cloud.tencent.cn

正常打开首页

2

.com.cn

入口冒烟

developer.cloud.tencent.com.cn

正常打开首页

3

.cn

链接跟随

developer.cloud.tencent.cn

悬停导航链接,href 为 .cn 后缀

4

.com.cn

链接跟随

developer.cloud.tencent.com.cn

悬停导航链接,href 为 .com.cn 后缀

5

.cn

登录跳转

developer.cloud.tencent.cn,未登录

登录后回到 .cn 后缀页面

6

.com.cn

登录跳转

developer.cloud.tencent.com.cn,未登录

登录后回到 .com.cn 后缀页面

qcloud-competition

后缀

机制

页面地址

验证操作

1

.cn

入口冒烟

competition.cloud.tencent.cn

正常打开竞赛首页

2

.com.cn

入口冒烟

competition.cloud.tencent.com.cn

正常打开竞赛首页

3

.cn

链接跟随

competition.cloud.tencent.cn

悬停导航链接,href 为 .cn 后缀

4

.cn

登录跳转

competition.cloud.tencent.cn,未登录

登录后回到 .cn 后缀页面


十、异常与边界场景

场景

页面地址

预期结果

1

访问不存在的内容(qcloud-community)

developer.cloud.tencent.com/article/不存在的ID

返回 404 页面,URL 域名不变

2

访问不存在的内容(qcloud-developer)

developer.cloud.tencent.com/ask/不存在的ID

返回 404 页面,URL 域名不变

3

访问不存在的竞赛(qcloud-competition)

competition.cloud.tencent.com/introduction/不存在的ID

返回 404 页面,URL 域名不变

4

新子域名下刷新页面

developer.cloud.tencent.com/article/{文章ID}

页面正常加载,URL 不变

5

新子域名下浏览器前进 / 后退

任意页面间跳转后

URL 保持新子域名格式

6

从外部跳入(微信、微博等)

新子域名格式的链接

正常打开,登录态正常


优先级建议

优先级

机制 / 场景

涉及项目

说明

P0

一、六个入口冒烟

全部

基础可用性

P0

四-1、登录跳转

全部

硬编码风险最高,三个项目均需验证

P0

三-1、导航链接跟随

全部

每个页面都有,影响面最大

P1

三-4/3-5、正文内链 / 列表卡片

developer / community

核心内容页链接

P1

四-2、发布内容后跳转

community

核心写作流程

P1

六、登录态 Cookie 共享

全部

新旧域名互通

P2

二、SSR 链接(源码验证)

全部

服务端输出正确性

P2

三-2/3-3、底部菜单 / 官网链接跟随

developer / community

后台配置链接

P2

四-3、创作者中心内部跳转

community

JS 直接跳转

P2

五、分享与海报链接生成

developer / community

传播场景

P2

八、跨项目跳转

developer / competition

跨站链接

P3

七、SEO canonical 标签

全部

SEO 影响

P3

四-4/4-5、快速提问 / 控制台跳转

developer

JS 直接跳转兜底

P3

九、跨后缀一致性(.cn / .com.cn)

全部

后缀回归

P3

十、异常与边界场景

全部

兜底验证

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 子域名适配测试方案
    • 背景
    • 一、六个入口冒烟
    • 二、机制一:服务端渲染链接(SSR 生成的 href)
      • qcloud-developer
      • qcloud-community
      • qcloud-competition
    • 三、机制二:客户端动态链接跟随(GlobalListener / handleMouseOver)
      • 3.1 导航栏链接
      • 3.2 底部菜单链接
      • 3.3 官网链接后缀跟随
      • 3.4 文章 / 问答正文内链
      • 3.5 内容列表卡片链接
    • 四、机制三:JS 直接跳转(GlobalListener 无法覆盖的场景)
      • 4.1 登录跳转(高风险)
      • 4.2 发布内容后跳转
      • 4.3 创作者中心内部跳转
      • 4.4 快速提问发布后跳转
      • 4.5 控制台跳转
    • 五、机制四:分享与海报链接生成
      • qcloud-developer
      • qcloud-community
    • 六、机制五:登录态(Cookie domain)
    • 七、机制六:SEO canonical 标签
      • qcloud-developer
      • qcloud-community
      • qcloud-competition
    • 八、跨项目跳转
    • 九、跨后缀一致性(.cn / .com.cn)
      • qcloud-developer
      • qcloud-community
      • qcloud-competition
    • 十、异常与边界场景
    • 优先级建议
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档