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