如何在AWS Route53中将www.example.com重定向至example.com?
实现www.example.com自动重定向到example.com并共用缓存
方案思路
通过CloudFront的边缘函数在请求阶段判断域名,将www.example.com的请求以301永久重定向指向example.com,确保用户最终访问的是同一个根域名,让浏览器共用本地缓存;同时将www域名的Route53记录指向同一CloudFront分发,由边缘层统一处理重定向逻辑。
具体步骤
1. 创建CloudFront重定向函数
- 登录CloudFront控制台,进入「函数」页面,点击「创建函数」
- 命名函数为
www-to-root-redirect,运行时选择CloudFront Functions,完成创建 - 在函数编辑器中替换为以下代码:
function handler(event) { const request = event.request; const host = request.headers.host.value; if (host === 'www.example.com') { return { statusCode: 301, statusDescription: 'Moved Permanently', headers: { location: { value: `https://example.com${request.uri}` } } }; } return request; }
- 保存函数后,将其发布到「生产」阶段
2. 关联函数到CloudFront分发
- 回到目标CloudFront分发页面,进入「行为」标签页
- 选择对应
example.com的行为(或创建路径模式为*的新行为,关联你的静态文件源) - 在「函数关联」区域的「查看器请求」选项中,选择刚才创建的
www-to-root-redirect函数 - 保存行为设置,等待CloudFront完成分发更新
3. 配置Route53解析记录
- 登录Route53控制台,打开你的域名托管区
- 确认
example.com的A/AAAA记录已设置为指向CloudFront分发的别名记录 - 为
www.example.com创建相同类型的A/AAAA别名记录,指向同一个CloudFront分发
方案优势
- 301永久重定向会让浏览器记住跳转关系,后续访问直接指向根域名,减少重复跳转
- 所有有效请求最终都落在
example.com,浏览器将其识别为同一站点,自动共用本地缓存 - 边缘函数运行在CloudFront节点,重定向处理高效,不会增加源站负载
内容的提问来源于stack exchange,提问作者Eldhoz
相关产品推荐
相关产品推荐

