CloudFront 使用 Lambda 将请求重定向到尾部斜杠
CloudFront redirect request with Lambda to trailing slash
我有一个静态 SPA 页面,它使用 S3 作为 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/
您可以通过两种方式做到这一点。
在 CloudFront 模式中,您可以检查 bucket-directory/prod/page 并使用 lambda 重定向到 bucket-directory/prod/page/.
另外你需要确保模式是按照以下顺序,
bucket-directory/prod/page <-- 这将进入 lambda 执行重定向
bucket-directory/prod/page/
页面将根据您的命名约定使用正则表达式。
或者您可以编写一个 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。
文档 link 应该有所帮助。
在 Cloudfront 上为 SPA 或静态页面进行完美设置并非易事。简而言之,您将需要(至少)为您的 CF 发行版使用原始请求 lambda 函数设置。您需要处理一些边缘情况,例如:
- 哈希值
- 重定向到带有尾部斜线的网址(您提到的)
- 重定向时转发查询参数
快速启动功能可以查看这篇文章https://tinyendian.com/articles/better-origin-response-function-for-cloudfront-hosted-static-pages explaining the actual code that you can copy from here https://gist.github.com/karolmajta/6aad229b415be43f5e0ec519b144c26e
当然,随着您的应用发生变化,您可能需要不时修改此代码段以满足您的需求。
我有一个静态 SPA 页面,它使用 S3 作为 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/
您可以通过两种方式做到这一点。
在 CloudFront 模式中,您可以检查 bucket-directory/prod/page 并使用 lambda 重定向到 bucket-directory/prod/page/.
另外你需要确保模式是按照以下顺序, bucket-directory/prod/page <-- 这将进入 lambda 执行重定向 bucket-directory/prod/page/
页面将根据您的命名约定使用正则表达式。
或者您可以编写一个 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。
文档 link 应该有所帮助。
在 Cloudfront 上为 SPA 或静态页面进行完美设置并非易事。简而言之,您将需要(至少)为您的 CF 发行版使用原始请求 lambda 函数设置。您需要处理一些边缘情况,例如:
- 哈希值
- 重定向到带有尾部斜线的网址(您提到的)
- 重定向时转发查询参数
快速启动功能可以查看这篇文章https://tinyendian.com/articles/better-origin-response-function-for-cloudfront-hosted-static-pages explaining the actual code that you can copy from here https://gist.github.com/karolmajta/6aad229b415be43f5e0ec519b144c26e
当然,随着您的应用发生变化,您可能需要不时修改此代码段以满足您的需求。