首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Cloudfront (w/ S3)静态网站不使用子目录中的index.html

Cloudfront (w/ S3)静态网站不使用子目录中的index.html
EN

Server Fault用户
提问于 2019-01-14 01:56:30
回答 1查看 1.5K关注 0票数 2

我的网站以CDN的形式托管在S3上,我需要这两个URL来表现相同的行为,并在目录中为index.html文件提供服务:

example.com/directory example.com/directory/

最后带有/的文件不正确地提示浏览器下载一个零字节文件,文件名为随机散列。如果没有斜杠,它将返回我的404页。

如何获得在目录中传递index.html文件的两种路径?

如果有什么办法让我这么做的话,太好了!这正是我所希望的,但如果不是,我可能会尝试使用Lambda@Edge进行重定向。无论如何,对于其他一些情况,我都需要这样做,所以关于如何从Lambda@Edge重定向301或302的一些说明也会有帮助:)

更新(根据John的评论)

curl -i https://www.example.com/directory/

代码语言:javascript
运行
复制
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错误路由。

EN

回答 1

Server Fault用户

发布于 2019-01-20 02:29:46

您是否尝试过直接访问S3上的目录而不经过cloudfront --这种行为是否类似?

实际上,我确保所有指向子目录的链接都以显式index.html结尾,以避免出现此问题。另一个选项是将每个子目录存储在cloudfront后面的自己的桶中-- index.html作为默认对象是一个S3设置,“我认为”仅适用于存储桶的根目录。

lambda@edge可以重写请求,而不是重定向用户。也就是说,每次GET请求以/结束时,都要假装为/。但恐怕不太优雅。

无论如何,对于这些无服务器架构来说,lambda@edge似乎是我们传统上将web服务器配置放在Nginx或Apache中的地方。

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/948908

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档