我的网站以CDN的形式托管在S3上,我需要这两个URL来表现相同的行为,并在目录中为index.html文件提供服务:
example.com/directory
example.com/directory/
最后带有/
的文件不正确地提示浏览器下载一个零字节文件,文件名为随机散列。如果没有斜杠,它将返回我的404页。
如何获得在目录中传递index.html文件的两种路径?
如果有什么办法让我这么做的话,太好了!这正是我所希望的,但如果不是,我可能会尝试使用Lambda@Edge进行重定向。无论如何,对于其他一些情况,我都需要这样做,所以关于如何从Lambda@Edge重定向301或302的一些说明也会有帮助:)
curl -i https://www.example.com/directory/
HTTP/2 200
content-type: application/x-directory
content-length: 0
date: Sat, 12 Jan 2019 22:07:47 GMT
last-modified: Wed, 31 Jan 2018 00:44:16 GMT
etag: "[id]"
accept-ranges: bytes
server: AmazonS3
x-cache: Miss from cloudfront
via: 1.1 [id].cloudfront.net (CloudFront)
x-amz-cf-id: [id]
CloudFront有一个行为集,将http转发到https并将请求发送给S3。我在错误选项卡下还有一个404错误路由。
发布于 2019-01-20 02:29:46
您是否尝试过直接访问S3上的目录而不经过cloudfront --这种行为是否类似?
实际上,我确保所有指向子目录的链接都以显式index.html结尾,以避免出现此问题。另一个选项是将每个子目录存储在cloudfront后面的自己的桶中-- index.html作为默认对象是一个S3设置,“我认为”仅适用于存储桶的根目录。
lambda@edge可以重写请求,而不是重定向用户。也就是说,每次GET请求以/结束时,都要假装为/。但恐怕不太优雅。
无论如何,对于这些无服务器架构来说,lambda@edge似乎是我们传统上将web服务器配置放在Nginx或Apache中的地方。
https://serverfault.com/questions/948908
复制相似问题