【发布时间】:2015-08-26 19:27:35
【问题描述】:
我注意到 Amazon S3 Redirect rule - GET data is missing 但在遵循接受的答案后,我的查询参数仍然没有被保留。
我有一个使用 React 和 React Router 的网站,这意味着我有几个 URL 可以加载相同的 HTML 和 JS,然后 JS 会根据 URL 确定要加载应用程序的哪个部分。
例如:
/foo、/bar、/baz 都应该加载 index.html,它加载 bundle.js。然后 bundle.js 观察到一些 React 组件(也在 bundle.js 中)的 URL 和路由。
但是 S3 中不存在 foo、bar 或 baz 文件,只有 index.html。我想要做的是当我收到 404 时,重定向到 /#!/{URL}(例如 /foo 重定向到 /#!/foo)。这适用于我的重定向规则(如下)。但是,我也想带上查询参数(例如 /foo?ping=pong 重定向到 /#!/foo?ping=pong),但 /foo?ping=pong 只是重定向到 /#!/foo。
这是我的重定向规则:
<RoutingRules>
<RoutingRule>
<Condition>
<HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals>
</Condition>
<Redirect>
<Protocol>http</Protocol>
<HostName>www.mydomain.com</HostName>
<ReplaceKeyPrefixWith>#!/</ReplaceKeyPrefixWith>
</Redirect>
</RoutingRule>
</RoutingRules>
有什么想法可以通过某种方式实现吗?理想情况下,每次添加新页面时都不必在 S3/CloudFront 中进行更改?
【问题讨论】:
-
出于好奇,
/foo/?ping=pong是否按预期工作? (在?之前添加一个斜杠)
标签: redirect amazon-web-services amazon-s3 amazon-cloudfront react-router