强制浏览器忘记缓存的重定向?

18

我继承了一个之前从根目录("/")重定向到"/index.shtml"的域名。

我已经删除了重定向和该域名上的其他网站,但是以前访问过该网站的人将在他们的浏览器中缓存重定向行为...非常长时间,除非他们手动清除缓存。

任何尝试在这些浏览器中访问example.com的人都会在进行任何HTTP请求之前被发送到example.com/index.shtml。现在这是一个巨大的问题,因为没有index.shtml,但我是否可以通过头文件告诉浏览器“忘记你刚刚做的那个重定向!”?

2个回答

16
简短回答:无法告诉用户的浏览器“忘记”301重定向。 301表示永久,只有在用户采取行动或缓存过期时才能撤消。

http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.2

在Stackoverflow上有类似的问题和答案: Apache - 如何在调试htaccess时禁用浏览器缓存, 无法删除301重定向

尽量避免使用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至少不同,但我不确定是否有效! - DMack
1
上一个链接中禁用缓存的指令对我有效。谢谢! - ostmond
最后一个链接已经失效了,你还记得这个问题的解决方案吗? - Steven Combs
即使使用302,您仍然会遇到一个问题,即浏览器继续使用缓存的重定向,尽管网站不再重定向。是否有302重定向的解决方案? - basZero

5
这可以通过清除仅包含数据的缓存来完成。它可以从浏览器中删除所有.htaccess重定向更改。

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接