【问题标题】:Cloudfront not redirecting with trailing slashCloudfront 不使用斜杠重定向
【发布时间】:2020-10-15 01:36:49
【问题描述】:

我正在通过 Cloudfront 托管一个包含来自 S3 存储桶的多个子域的网站。 当我转到www.domain.com/subdomain/(注意:带有斜杠)时,网站会正确加载并从www.domain.com/subdomain/****.js 获取缩小的 .js 和 .css 文件。

但是,如果我导航到不带斜杠的 www.domain.com/subdomain,则仍会提供网站的 index.html,但会尝试从 www.domain.com/****.js 获取资产。

我尝试使用 lamba@edge 函数来更改请求 uri 并附加斜杠,但这不起作用。感谢您的帮助!

【问题讨论】:

    标签: amazon-web-services amazon-s3 amazon-cloudfront


    【解决方案1】:

    这将由 html 引用相对文件路径(即 src="****.js"src="/subdomain/****.js")引起。

    如果您要解决此问题,您需要在用户浏览器中执行重定向到斜杠路径。这可以通过使用 Lambda@Edge 函数在 Origin Response 事件中执行重定向来完成。

    example redirect 函数如下

     def lambda_handler(event, context):
     
         # Generate HTTP redirect response with 302 status code and Location header.
         
         response = {
             'status': '302',
             'statusDescription': 'Found',
             'headers': {
                 'location': [{
                     'key': 'Location',
                     'value': 'http://docs.aws.amazon.com/lambda/latest/dg/lambda-edge.html'
                 }]
             }
         }
         
         return response
    

    为此,您需要添加自定义逻辑,以检查是否需要重定向 URL,方法是检查“/”字符作为请求的最后一个字符。

    此外,如果您可以将 css、js 和图像的路径从相对路径更改为绝对路径,如本答案顶部所指出的那样。

    【讨论】:

      猜你喜欢
      • 2018-01-02
      • 1970-01-01
      • 2014-11-03
      • 2013-04-16
      • 1970-01-01
      • 2011-10-19
      • 2021-05-21
      • 2014-04-14
      • 2016-04-06
      相关资源
      最近更新 更多