Amazon S3存储桶可以托管静态网站,与托管完整的服务器相比,这非常有用且具有成本效益。它具有一项功能,您可以在其中指定index.html,404.html和重定向规则。我在问重定向规则。
是否可以替换密钥而不重定向?
下面的示例有效。当用户访问www.example.com时,将向他们提供index.html页面(并且浏览器的URL不变)。当他们请求不存在的URL时,将为404.html文件提供服务(并且浏览器的URL不变)(这很重要)
在下面的示例中,我指定了重定向规则。当用户点击此按钮时,浏览器的URL就会更改。 curl
命令显示S3发送回301重定向。好的。这就是规则所说的-(它说Redirect
)
但是我不想一直重定向。有时,我希望保留网址,但提供另一个页面。 (类似于404页面)
实际示例:
目前在S3中似乎无法实现。可能吗?这是我的问题。
{
"Bucket": "www.example.com",
"WebsiteConfiguration": {
"ErrorDocument": {
"Key": "404.html"
},
"IndexDocument": {
"Suffix": "index.html"
},
"RoutingRules": [
{
"Condition": {
"KeyPrefixEquals": "products/spiderman-action-figure"
},
"Redirect": {
"ReplaceKeyWith": "475872.html"
}
}
]
}
}
答案 0 :(得分:0)
我遇到了同样的问题,这就是我解决的方法。
将S3存储桶指向CloudFront并重写请求模式。
在路径模式中,
/ products / spiderman-action-figure指向您的来源 /products/475872.html(S3存储桶URL)
后来我们通过代码修改的更清洁的解决方案是使用Lambda @ Edge。
https://docs.aws.amazon.com/lambda/latest/dg/lambda-edge.html
与URL原点更改请求关联的Lambda函数请求将为viewer request
。
此处包含实施示例。
希望有帮助。
答案 1 :(得分:0)
这对于S3路由规则是不可能的。
它们只能用于生成重定向。