如何将AWS CloudFront分发内容重定向到自定义域名的指定路径
解决方案
可以实现,路径级的映射不需要通过Route53配置,直接在CloudFront层完成即可,根据你的实际架构选以下两种方案:
方案1:主站已通过CloudFront托管的情况
如果你的根域名example.com本身已经绑定了另一个CloudFront分发托管主站内容,直接新增缓存行为即可:
- 打开根域名对应的CloudFront分发控制台,进入「行为」页签
- 点击「创建行为」,路径模式填写
/path/*(替换为你需要的实际路径前缀) - 源站选择你托管评分页面的S3存储桶,如未添加过该源站,先在「源站」页签新增对应S3源
- 若评分页面资源全部存放在S3根目录,无需额外配置源路径;若资源存放在S3的
/path目录下,源站配置处填写源路径为/path - 缓存策略选择默认的CachingOptimized即可,保存行为后等待CloudFront分发部署生效(约5-10分钟)
方案2:评分页面是唯一托管在CloudFront的内容
如果example.com暂时没有绑定其他服务,直接给当前评分页的CloudFront分发配置路径映射即可:
- 首先在CloudFront分发的「常规」设置中,添加备用域名(CNAME)为
example.com,并绑定覆盖example.com的ACM证书 - 若你希望所有
example.com/path下的请求都返回评分页资源,可配置CloudFront Functions做路径重写,示例代码如下:
function handler(event) { const request = event.request; // 匹配/path前缀的请求 if (request.uri.startsWith('/path')) { // 移除路径前缀,请求S3中对应的静态资源 request.uri = request.uri.replace(/^\/path/, ''); } return request; }
- 将上述函数关联到CloudFront分发的Viewer Request触发事件,保存部署即可生效
注意事项
- Route53别名记录仅支持域名级别的指向,无法处理路径逻辑,所有路径相关的转发、重写规则都在CloudFront层配置即可
- 配置完成后如果出现访问异常,可先清除CloudFront缓存后再测试
- 确保S3存储桶的权限配置允许CloudFront服务访问,无需配置公开访问权限
内容的提问来源于stack exchange,提问作者Claudiu Scurtu
相关产品推荐
相关产品推荐

