如何让CloudFront行为识别路径开头的双斜杠?
解决CloudFront开头双斜杠路径匹配问题
核心原因
CloudFront默认会规范化请求URI,自动将多个连续斜杠合并为单个斜杠,所以你之前尝试的//、//*等路径规则无法匹配原始的双斜杠请求——因为请求到达CloudFront行为匹配阶段时,URI已经被转成单斜杠开头了。
解决方案(无需Lambda)
- 创建新缓存行为
在CloudFront分发的「行为」标签页点击「创建行为」,路径模式填写//*,将源设置为你要转发的Web服务器。 - 关闭该行为的URI规范化
在该行为的「缓存键和源请求」设置中,找到「规范化查询字符串和路径」选项,选择**「否」**,让CloudFront保留原始请求中的双斜杠,不自动合并。 - 调整行为优先级
将新行为的优先级设为高于默认行为,确保双斜杠请求先被匹配到。 - 部署并刷新缓存
保存更改后等待CloudFront部署完成(通常需几分钟),对相关路径执行缓存失效操作,确保新规则生效。
补充说明
如果之后需要匹配路径中任意位置的双斜杠,可将路径模式改为*//*,同样配合关闭URI规范化的设置即可。关闭该选项后,缓存键会包含原始URI,可能增加缓存条目数量,但由于你的双斜杠请求占比极低,实际影响可以忽略。
内容的提问来源于stack exchange,提问作者Daniel T.
相关产品推荐
相关产品推荐

