我需要使用 cloudfront 和 s3 重定向我的 url

Posted

技术标签:

【中文标题】我需要使用 cloudfront 和 s3 重定向我的 url【英文标题】:I need to redirection for my url using cloudfront and s3 【发布时间】:2020-11-06 03:15:25 【问题描述】:

我有一个网址说example.com/eu/blog/,在这个页面上,我有一个按钮,当任何用户点击按钮时,它会转到oil-gas.com/en(这是一个不同的网站)..现在我想要这个链接作为example.com/eu/blog/oil-gas/en,目前我在example.com/eu/blog/oil-gas/en 中没有任何内容。

我使用了 apache proxypass 并且它可以工作,但我想知道我们是否可以使用 S3、cloudfront 来做到这一点.. 我们可以在 S3 中创建存储桶并启用带有重定向的静态托管...我希望 url 具体example.com/eu/blog/oil-gas/en。请提供更多帮助或建议

【问题讨论】:

【参考方案1】:

您可以通过添加 Lambda@Edge 函数在 CloudFront 中设置重定向。这将被添加到 Origin Response 事件中。

代码如下所示

 def lambda_handler(event, context):
 
     request = event["Records"][0]["cf"]["request"]
     response = event["Records"][0]["cf"]["response"]
     
     #If it matches this path perform a redirect
     if request['uri'] == "url/to/redirect":
    
         response = 
             'status': '302',
             'statusDescription': 'Found',
             'headers': 
                 'location': [
                     'key': 'Location',
                     'value': 'http://example.com/eu/blog/oil-gas/en'
                 ]
             
         
     
     return response

这里有一些examples。

【讨论】:

以上是关于我需要使用 cloudfront 和 s3 重定向我的 url的主要内容,如果未能解决你的问题,请参考以下文章

Cloudfront 域名无法使用 S3、Cloudfront 和 Route 53 将 HTTP 重定向到 HTTPS

AWS CloudFront 和 S3,使用单一重定向处理 WWW 和 HTTPS

使用 CloudFront 和目录重定向的 AWS S3 静态网站托管

cloudfront 和 s3 301 重定向显示存储桶的裸域

使用 S3/CloudFront 将 www 重定向到非 www,无需单独的存储桶

AWS CloudFront 如何遵循 S3 存储桶重定向规则?