Redirect Amazon S3重定向规则-保留查询参数
我注意到了,但在遵循接受的答案之后,我的查询参数仍然没有被保留 我有一个使用React和React Router的站点,这意味着我有几个加载相同HTML和JS的URL,然后JS根据URL确定要加载应用程序的哪个部分 例如: /foo、/bar、/baz都应该加载index.html,这将加载bundle.js。然后bundle.js观察URL并路由到某个React组件(也在bundle.js中) 但是,S3中不存在foo、bar或baz文件,只有index.html。我想做的是当我得到一个404,重定向到/#/{URL}(例如/foo重定向到/#!/foo)。这适用于我的重定向规则(如下)。但是,我还想带上查询参数(例如/foo?ping=pong重定向到/#!/foo?ping=pong),但是/foo?ping=pong只是重定向到/#/福 以下是我的重定向规则:Redirect Amazon S3重定向规则-保留查询参数,redirect,amazon-web-services,amazon-s3,amazon-cloudfront,react-router,Redirect,Amazon Web Services,Amazon S3,Amazon Cloudfront,React Router,我注意到了,但在遵循接受的答案之后,我的查询参数仍然没有被保留 我有一个使用React和React Router的站点,这意味着我有几个加载相同HTML和JS的URL,然后JS根据URL确定要加载应用程序的哪个部分 例如: /foo、/bar、/baz都应该加载index.html,这将加载bundle.js。然后bundle.js观察URL并路由到某个React组件(也在bundle.js中) 但是,S3中不存在foo、bar或baz文件,只有index.html。我想做的是当我得到一个404
<RoutingRules>
<RoutingRule>
<Condition>
<HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals>
</Condition>
<Redirect>
<Protocol>http</Protocol>
<HostName>www.mydomain.com</HostName>
<ReplaceKeyPrefixWith>#!/</ReplaceKeyPrefixWith>
</Redirect>
</RoutingRule>
</RoutingRules>
404
http
www.mydomain.com
#!/
我有什么办法可以做到这一点吗?理想情况下,每次我添加新页面时,不必在S3/CloudFront中更改某些内容?问题是,我在CloudFront中设置了源站,不转发查询字符串,因此当S3收到请求时,它将在没有查询参数的情况下正确重定向。您可以在CloudFront>行为>转发查询字符串中找到此设置。如果您想拥有清晰的URL,也可以签出。您需要设置cloudfront发行版,然后在发行版的“错误页面”部分更改404行为。这样你就可以再次
domain.com/foo/bar
links:)出于好奇,/foo/?ping=pong
是否按预期工作?(在?
之前添加一个尾随斜杠)交叉post。。。谢谢你的提示-我试着在cloudfront中设置它,但是当我在Chrome inspector中查看sources选项卡时,它正在加载index.html页面作为bundle.js文件,因此我得到了一个意外标记Yes!!救命恩人@乔希:你是说直接上S3?那么不应该忽略查询参数。在我的例子中,CloudFront正在删除查询参数,这是我的问题。如果您没有使用CloudFront,您不应该遇到同样的问题。查询参数似乎只被S3文件夹重定向剥离,例如:/my page?this=that
>>/my page/
运气好吗@doublejosh?也有同样的问题。除了非常小心之外,找不到解决方案。你总是在分享URL时在问号前加上最后一个斜杠。