Almeno due browser, Chrome e Firefox, memorizzeranno nella cache un reindirizzamento 301 senza data di scadenza .
Cioè, rimarrà nella cache fino a quando la cache del browser può adattarlo. Verrà rimosso dalla cache se si cancella manualmente la cache o se le voci della cache vengono eliminate per fare spazio a quelle nuove.
Puoi verificarlo almeno in Firefox andando su about:cache
e trovandolo nella cache del disco.
Non conosco il comportamento di altri browser, come IE10 / IE11. Tuttavia, dato che altri browser lo memorizzano nella cache per un tempo indefinito, dovrai comunque occuparti di questo.
In tutti i browser, incluso Chrome / Firefox, è ancora possibile ignorare questo comportamento predefinito usando le intestazioni, come descritto di seguito:
Nota: questa risposta è stata scritta nel 2014 e il comportamento del browser potrebbe cambiare nel tempo.
Se non si desidera che il reindirizzamento venga memorizzato nella cache
Questa memorizzazione nella cache indefinita è solo la memorizzazione nella cache predefinita di questi browser in assenza di intestazioni Cache-Control. La logica è che stai specificando un reindirizzamento "permanente" e non stai dando loro altre istruzioni di memorizzazione nella cache, quindi lo tratteranno come se lo volessi nella cache indefinitamente.
I browser rispettano ancora le intestazioni Cache-Control e scadono come con qualsiasi altra risposta, se specificate.
Puoi aggiungere intestazioni come Cache-Control: max-age=3600
o Expires: Thu, 01 Dec 2014 16:00:00 GMT
ai tuoi reindirizzamenti 301. Potresti anche aggiungere in Cache-Control: no-cache
modo che non venga memorizzato nella cache in modo permanente dal browser o Cache-Control: no-store
che non possa nemmeno essere archiviato in memoria temporanea dal browser.
Un'alternativa migliore secondo me, tuttavia, è usare un reindirizzamento 302 o 307. Questi non implicano per i browser o le cache che sono reindirizzamenti "permanenti" e quindi non dovrebbero essere memorizzati nella cache in assenza delle intestazioni Cache-Control.
Per me, sembra emettere un reindirizzamento 301 ma contrassegnarlo come non memorizzabile nella cache va contro lo spirito di ciò a cui serve un reindirizzamento 301, anche se può essere tecnicamente valido. YMMV e potresti trovare casi limite in cui ha senso che un reindirizzamento "permanente" abbia un limite di tempo.
Se in precedenza hai emesso un reindirizzamento 301 ma desideri annullare l'operazione
Se le persone hanno ancora il reindirizzamento 301 memorizzato nella cache nel loro browser continueranno a essere indirizzate alla pagina di destinazione indipendentemente dal fatto che la pagina di origine abbia ancora il reindirizzamento attivo. Le opzioni per risolvere questo problema includono:
La soluzione più semplice e migliore è emettere nuovamente un altro reindirizzamento 301.
Il browser si renderà conto che viene reindirizzato a quello che in precedenza pensava fosse un URL non commissionato, e ciò dovrebbe causare nuovamente il recupero di tale URL per confermare che il vecchio reindirizzamento non è ancora presente.
Modifica: alcuni commenti mettono in dubbio questo, vedi sotto.
Se non hai il controllo del sito in cui è stato indirizzato il target di reindirizzamento precedente, sei sfortunato. Prova a chiedere al proprietario del sito di reindirizzare a te.
Anche prevenire è meglio che curare: evita un reindirizzamento 301 se non sei sicuro di voler rimuovere definitivamente la commissione dal vecchio URL.