强制浏览器忘记缓存的重定向?
Posted
技术标签:
【中文标题】强制浏览器忘记缓存的重定向?【英文标题】:Force browsers to forget cached redirects? 【发布时间】:2014-06-17 07:15:12 【问题描述】:我继承了一个以前具有从根 ("/") 到 "/index.shtml" 的 301 重定向的域
我已经删除了重定向和域上的另一个站点,但是过去访问该站点的人会将重定向行为缓存在他们的浏览器中......很长一段时间,除非他们手动清除缓存.
任何尝试在这些浏览器中访问 example.com 的人都会在他们发出任何 HTTP 请求之前被发送到 example.com/index.shtml。现在这是一个很大的问题,因为没有 index.shtml,但是我可以用 header 做些什么来告诉浏览器“忘记你刚刚做的重定向!”?
【问题讨论】:
【参考方案1】:简短的回答:没有办法告诉用户的浏览器“忘记”R 301 重定向。 301 表示永久,只有在用户操作或缓存过期时才能撤消。
http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.2
*** 上的类似 Q 和 A: Apache - how to disable browser caching while debugging htaccess, Cannot remove 301 redirect
尽量避免 301 重定向并改用 302(暂时)。这是一篇如何为 301 重定向设置不缓存的文章(没有尝试过): https://github.com/markkolich/blog/blob/master/content/entries/set-cache-control-and-expires-headers-on-a-redirect-with-mod-rewrite.md
您可以在您的场景中做些什么:您可以将标头重定向添加到文件 index.shtml,这会将用户发送到他通常应该去的原始文件。
【讨论】:
将 index.shtml 重定向回根目录会在受影响的浏览器中创建一个重定向循环。我将其 [302] 重定向回 example.com/?home,因此 URL 至少有所不同,但我不确定这是否有效! 最后一个链接中禁用缓存的指令对我有用。谢谢! 最后一个链接失效了,你还记得解决方法吗? 即使使用 302,您也会遇到浏览器继续使用缓存重定向的问题,尽管站点不再重定向。 302重定向有解决方案吗?【参考方案2】:这可以通过清除数据缓存来完成。 它可以删除所有,.htaccess 重定向来自浏览器的更改。
【讨论】:
以上是关于强制浏览器忘记缓存的重定向?的主要内容,如果未能解决你的问题,请参考以下文章
为啥浏览器不遵循使用 XMLHTTPRequest 和 CORS 的重定向?