CloudFront 使用 Lambda 将请求重定向到尾部斜杠

hyb*_*id9 2 amazon-s3 amazon-web-services amazon-cloudfront aws-lambda

我有一个使用 S3 的静态 SPA 页面,因为它是 CloudFront 的源头。如果我访问 www.domain.com/page,我将获得bucket-directory/prod/page/预期的 CloudFront 路径前缀。

是否可以在 AWS Lambda 中捕获路径并将尾部斜杠附加到请求中,因此它变为 www.domain.com/page > [Lambda] > www.domain.com/page/

我一直在寻找并尝试以下资源,但收效甚微:http : //blog.rowanudell.com/redirects-in-serverless/

http://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-create-api-as-simple-proxy-for-lambda.html

小智 6

在 Cloudfront 上为 SPA 或静态页面进行完美设置并非易事。简而言之,您将需要(至少)为您的 CF 发行版使用源请求 lambda 函数设置。您需要处理一些边缘情况,例如:

  • 散列
  • 重定向到带有尾部斜杠的网址(您提到的)
  • 重定向时转发查询参数

对于快速启动功能,您可以查看这篇文章https://tinyendian.com/articles/better-origin-response-function-for-cloudfront-hosted-static-pages解释您可以从这里复制的实际代码https:/ /gist.github.com/karolmajta/6aad229b415be43f5e0ec519b144c26e

当然,随着您的应用程序发生变化,您可能需要在这里和那里修改此代码段以满足您的需求。