Принаймні два браузери - Chrome і Firefox - кешуватимуть переадресацію 301 без дати закінчення терміну дії .
Тобто він буде зберігатися в кешованому режимі до тих пір, поки кеш браузера зможе вмістити його. Він буде видалений з кеша, якщо ви очистите кеш вручну або якщо записи кешу очищені, щоб звільнити місце для нових.
Ви можете перевірити це принаймні у Firefox, перейшовши about:cache
та знайшовши його в кеш-диску.
Я не знаю про поведінку інших браузерів, таких як IE10 / IE11. Однак, враховуючи те, що інші браузери кешують це нескінченно, вам все одно доведеться пристосовуватися до цього.
У всіх веб-переглядачах, включаючи Chrome / Firefox, все ще можливо змінити цю поведінку за замовчуванням за допомогою заголовків, як описано нижче:
Примітка. Ця відповідь була написана в 2014 році, і поведінка браузера може змінюватися з часом.
Якщо ви не хочете, щоб переспрямування було кешоване
Це невизначене кешування - це кешування за замовчуванням у цих браузерах за відсутності заголовків кеш-керування. Логіка полягає в тому, що ви вказуєте "постійне" переспрямування і не даєте їм жодних інших інструкцій щодо кешування, тому вони будуть ставитися до нього так, як ніби ви хотіли, щоб це було визначено кешований на невизначений термін.
Браузери все ще вшановують заголовки кеша-керування та закінчується, як і будь-яку іншу відповідь, якщо вони вказані.
Ви можете додати заголовки, такі як Cache-Control: max-age=3600
або Expires: Thu, 01 Dec 2014 16:00:00 GMT
до ваших перенаправлень 301. Ви навіть можете додати, Cache-Control: no-cache
щоб він не кешувався постійно браузером абоCache-Control: no-store
зберігався в він навіть не міг зберігатись у тимчасовому сховищі браузера.
Однак, на мою думку, кращою альтернативою є використання переадресації 302 або 307. Вони не означають браузерам або кешам, що вони є "постійними" переадресаціями, і, таким чином, не слід кешувати їх відсутністю у заголовках кеш-керування.
Мені здається, що видача переадресації 301, але позначення її як не кешованої суперечить духу того, для чого потрібне переадресація 301, навіть якщо це технічно є дійсним. YMMV, і ви можете виявити крайові випадки, коли "постійне" перенаправлення має сенс мати часовий обмеження.
Якщо ви раніше видавали переспрямування 301, але хочете цього не робити
Якщо люди все ще мають кешоване переадресацію 301 у своєму браузері, вони продовжуватимуть переходити на цільову сторінку незалежно від того, на якій сторінці джерела все ще є переспрямування. Ваші варіанти виправлення цього стосуються:
Найпростіше і найкраще рішення - знову зробити ще одну переадресацію 301.
Веб-переглядач зрозуміє, що він спрямований назад до того, що раніше вважалося URL-адресою, що скасується, і це повинно змусити його повторно отримати цю URL-адресу, щоб підтвердити, що старого переспрямування ще немає.
Редагувати: деякі коментарі викликають сумніви щодо цього, дивіться нижче.
Якщо у вас немає контролю над сайтом, на який пішла попередня ціль переадресації, то вам не пощастить. Спробуйте і попросіть власника сайту переспрямувати вас назад.
Також запобігання краще, ніж лікування - уникайте перенаправлення 301, якщо ви не впевнені, що хочете назавжди зняти стару URL-адресу.