我有一个静态SPA页面,它使用S3作为CloudFront的原点。如果我访问www.domain.com/page,我会得到前缀为bucket-directory/prod/page/
的CloudFront路径。
是否可以捕获AWS Lambda中的路径并将尾部斜杠附加到请求,因此它变为www.domain.com/page> Λ> www.domain.com/page /
我一直在寻找并尝试以下资源,但收效甚微: http://blog.rowanudell.com/redirects-in-serverless/
答案 0 :(得分:1)
在Cloudfront上获得SPA或静态页面的完美设置并非易事。简而言之,您需要为CF发行版使用(至少)原始请求lambda函数设置。您需要处理一些边缘情况,例如:
要获得快速启动功能,您可以查看这篇文章https://tinyendian.com/articles/better-origin-response-function-for-cloudfront-hosted-static-pages,说明您可以从此处复制的实际代码https://gist.github.com/karolmajta/6aad229b415be43f5e0ec519b144c26e
当然,随着您的应用更改,您可能需要在此处修改此代码段以满足您的需求。
答案 1 :(得分:0)
你可以通过两种方式做到这一点。
在CloudFront模式中,您可以检查bucket-directory / prod / page并使用lambda重定向到bucket-directory / prod / page /。
此外,您需要确保模式按以下顺序排列, bucket-directory / prod / page< - 这将使lambda执行重定向 斗目录/ PROD /页/
页面将根据您的命名约定使用正则表达式。
或者您可以编写一个Lambda函数,该函数可以获取URL并修改URL以在其不存在时附加斜杠并将请求转发给原点。
http://docs.aws.amazon.com/lambda/latest/dg/lambda-edge.html
Lambda Edge将使其更容易并避免重定向。
使用Lambdda Edge,您可以从bucket-directory / prod / page更改为bucket-directory / something / someotherpage。
文档链接应该有所帮助。