Force browsers to forget cached redirects?

DMack picture DMack · Apr 30, 2014 · Viewed 21.5k times · Source

I inherited a domain that previously had a 301 redirect from the root ("/") to "/index.shtml"

I've removed the redirect and a different site on the domain, but people who visited the site in the past will have the redirect behavior cached in their browsers... for a terribly long time, unless they manually clear their caches.

Anyone trying to go to example.com in these browsers will be sent to example.com/index.shtml before they even make any HTTP requests. Right now this is a huge problem because there is no index.shtml, but is there something I can do with headers to tell browsers to "forget about that redirect you just did!"?

Answer

meberhard picture meberhard · May 1, 2014

The short answer: There is no way to tell the browsers of the users to "forget" the R 301 redirect. 301 means permanent, it can be only undone on action of the user or when the cache expires.

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

Similar Q and A on Stackoverflow: Apache - how to disable browser caching while debugging htaccess, Cannot remove 301 redirect

Try to avoid 301 redirects and use 302 (temporarily) instead. Here is an article how to set no cache for 301 redirects (didn't try it): https://github.com/markkolich/blog/blob/master/content/entries/set-cache-control-and-expires-headers-on-a-redirect-with-mod-rewrite.md

What you could do in your scenario: You could add a header redirect to the file index.shtml, which sends the user to the original file, where he should usually go.