PHP промежуточный редирект

161
19 августа 2018, 12:20

Есть ссылка на страницу А в которой при первом посещении записывается в куки информация о посещении страницы, затем сразу идет редирект на страницу B

Логика работы:

При первом переходе мы "пролетаем" первую страницу и попадаем на страницу B и если мы нажмем кнопку назад - мы попадаем на первую страницу. Поскольку кука уже записана - нас больше никуда не редиректит

Проблема:

На некоторых устройствах (это могут быть два Chrome на разных машинах). При нажатии назад - открывается пустая страница как буд-то история браузера пуста. Хотя в истории у нас записано посещение обеих страниц. Можно ли каким то образом отследить причину такого поведения браузера?

Answer 1

Chrome считает что страница с переадресацией будет всё также переадресовывать и в следующий раз, если эту страницу можно положить в кеш, потому при нажатии кнопки "назад" просто пропускает эту страницу - иначе кнопка "назад" просто не будет работать со стороны пользователя.

Значит вам нужно запретить кеширование страницы с переадресацией, делать переадресацию не через HTTP заголовоки, или вообще отказаться от такой схемы. Последний вариант более предпочтительный потому как то, что вы делаете, может подпасть под определение варианта черного SEO с понятными последствиями.

Answer 2

В качестве workaround можно использовать следующий код, который отправит браузеру заголовки, говорящие о том, что эту страницу нужно не кешировать, а загружать каждый раз:

header("Cache-Control: no-cache, no-store, must-revalidate");
header("Pragma: no-cache");
header("Expires: 0 ");

Но, есть вероятность что эти заголовки не будут учтены (настройки браузера, работа прокси и т. д.), поэтому предпочтительнее изменить архитектуру, если это возможно.

Answer 3

Использовал следующую js конструкцию на первой странице

<script type="text/javascript">
history.pushState(null, null, location.href);
window.onpopstate = function(event) {
    history.go(1);
};
</script>
READ ALSO
Подключение необходимых файлов проекта PHP

Подключение необходимых файлов проекта PHP

Экосистема: PHP 71, самописный проект, я основной разработчик, программист С/С++

156
Script timed out before returning headers

Script timed out before returning headers

У меня на сервере установлена CentOS и панель CWPТам крутится 1 сайт

239
Генерация qrcode

Генерация qrcode

Как можно сгенерировать на php qrcode биткоин по его адресу, например для этого? 15v3Wm3sDUht2VtgtLyvUxdcTw6pAwGaA5?

196
Как вывести значения массива?

Как вывести значения массива?

Столкнулся с проблемой, необходимо вывести несколько раз один и тот же элемент массива, один раз получается вывести Red

173