【发布时间】:2018-08-12 13:25:34
【问题描述】:
我正在管理一个具有这种模式的 URL 的文档网站:
/product-foo/1.2.3/user-guide/system-requirements.html
我希望页面有 两个 URL:
/product-foo/1.2.3/user-guide/system-requirements.html
/product-foo/latest/user-guide/system-requirements.html
可以使用 Apache Web 服务器完成,如
http://httpd.apache.org/docs/2.4/rewrite/remapping.html
“假设我们最近将页面
foo.html重命名为bar.html,现在想要提供旧 URL 以实现向后兼容性。但是,我们希望旧 URL 的用户甚至不知道页面已重命名 - 那是,我们不希望在他们的浏览器中更改地址。
解决方案:我们通过以下规则在内部将旧 URL 重写为新 URL:RewriteEngine onRewriteRule "^/foo\.html$" "/bar.html" [PT]"
这个想法是,对于每个新产品版本,我都会更新重定向,以将“最新”模式指向最新发布版本的文档。这样人们就可以根据需要链接到最新的文档,也可以根据需要链接到特定版本的版本。
这可以通过 Cloudfront 配置 来完成吗?可以在没有 Cloudfront 的情况下单独使用 s3 完成吗?可以使用 AWS Lambda 或 Lambda@Edge 完成吗? (该解决方案会受到 Lambda@Edge 带宽限制吗?)您能否提供一个具体的示例解决方案?
【问题讨论】:
-
“解决方案是否受 Lambda@Edge 带宽限制?” Lambda@Edge 没有“带宽限制”。您是指生成的响应大小限制吗?涉及多少产品?这是相关的,因为可以实现您提出的方案,但当然需要一个映射表,以便逻辑知道每个产品的“最新”版本是什么......并且可以说,“最新”链接应该重定向到当前页面而不是备用 URL。这将是一种不同的解决方案,而不是本质上将一条路径别名为另一条路径。请澄清。
-
谢谢你,迈克尔。是的,生成的响应大小限制。我们有 11 种产品,但期待更多。即使有预期的增加,查找表中的十几个或几十个项目似乎也是可行的。我们不想要一个简单的重定向,因为我们希望大多数人链接到最新的文档,并让他们的链接继续指向最新的文档,除非他们明确引用特定版本。一个简单的重定向会更改浏览器中的 URL,因此大多数访问者永远不会知道“最新”的 URL 格式。
标签: amazon-s3 aws-lambda amazon-cloudfront