我有一个托管Vue应用程序的S3存储桶,该应用程序使用启用了历史记录模式的Vue路由器。最初,我具有以下重定向规则来解决S3无法解析“虚拟”路由的问题(基于此方法)。它为该路径添加了哈希语法的前缀,该哈希语法由页面上的脚本标识和剥离,history.pushState()
用于将其转换为历史模式可以理解的非哈希路径。
<RoutingRules>
<RoutingRule>
<Condition>
<HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals>
</Condition>
<Redirect>
<HostName>mydomain.com</HostName>
<ReplaceKeyPrefixWith>#!/</ReplaceKeyPrefixWith>
</Redirect>
</RoutingRule>
</RoutingRules>
但是,更现代的方法是让CloudFront通过指向403
和404
错误页面进行操作/index.html
(基于此方法)。
设置CloudFront错误页面后,我从存储桶中删除了重定向规则,甚至从存储桶中删除了错误文档。但是,S3继续使用重定向规则,并用前缀我的路由#!/
。
如何强制重定向规则停止运行?
CloudFront失效针对浏览器实际请求的路径,而不是源服务器(后端)请求的路径。
无效/
可能会在这种情况下工作过,但/*
无效信号应有尽有。使用/index.html
(/
如果您不这样做,控制台会无形地添加前导)只会在浏览器直接请求的情况下清除缓存/index.html
。
即使无效,CloudFront也会接受无效请求,因为无效请求本质上是确保缓存中没有匹配对象的指令。失效请求完成后,该条件为真-那时没有匹配的对象。无论它们是否被清除,都可以将其视为无效请求,因为它们现在已经消失了……但是,这样做的副作用是,如果您使已经失效的某些东西无效,则不会收到警告。永远不会。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句