You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通配符子域名实现咨询:搭建类似Blogger的用户动态子站点

动态子域名静态站点实现方案答疑

问题1:使用JS提取子域名的实现方法

分两种运行场景给出对应代码:

浏览器端运行场景

直接从页面地址的host字段拆分即可,适配你的*.example.com场景代码如下:

function extractSubdomain() {
  const host = window.location.host;
  const hostSegments = host.split('.');
  // 适配根域为二级域名(如example.com)的场景
  if (hostSegments.length < 3) return ''; // 无有效子域名时返回空
  // 可选:过滤www前缀的情况
  return hostSegments[0] === 'www' ? hostSegments[1] : hostSegments[0];
}
// 调用示例:extractSubdomain('user1.example.com') 返回 'user1'

Node.js服务端运行场景

如果是在边缘函数、后端服务中运行,从请求头的Host字段取值,拆分逻辑和上述一致。如果需要适配.co.uk这类多级根域名的场景,可以引入psl(公共后缀列表)库做更精准的判断。

问题2:S3按子文件夹存储用户资源的可行性

该方案完全可行,是同类静态多租户站点的常用实现方式,只需要额外补充一层路由映射逻辑即可:

  • S3侧可以按照/{子域名}/{静态资源路径}的规则存储资源,比如user1/index.html、user1/style.css分别对应用户user1的首页和样式文件
  • 你需要在CDN层(比如CloudFront、阿里云CDN等)配置边缘函数/路由规则,拿到请求的子域名后,将原请求路径改写为/${子域名}/${原请求路径},比如用户访问user1.example.com/style.css时,实际向S3请求的路径是/user1/style.css,自动匹配到对应文件夹下的资源

注意事项

  • 建议将S3桶设置为私有,仅允许CDN的服务角色访问,避免用户直接访问S3源站绕过子域名映射规则
  • 配置默认文档规则,用户访问子域名根路径时,自动改写为对应子文件夹下的index.html

内容的提问来源于stack exchange,提问作者Chetan Jain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 06:45:03