LINUX.ORG.RU

Сайт выполнил переадресацию слишком много раз

 , ,


0

1

Я разрабатываю некий модуль на сайт и его функциональность (чтобы все заработало на сайте как надо) нуждается в 2-3 редиректах. Это может быть редирект как сам на себя с установкой либо удалением куков или редирект на немного измененный адрес сайта. По другому без редиректов сделать не можно.

И вот короче сайт сделал эти 2 редиректа и я нажимаю кнопку назад в браузере. После чего мне на пол секунды показывается окно «Сайт выполнил переадресацию слишком много раз» и страница сайта загружается как обычно.

Логично, что если браузер такое пишет, то ошибка в коде. Но проблема в том, что такое пишет только google chrome. Во всех остальных браузерах нормально.

Код модуля я показывать не буду, т.к там много чего будет непонятно.

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

Я предполагаю, что браузер не успевает установить куки и не посылает их со следующим запросом. Как результат зацикливания на часть секунды. Лишних запросов к сайту в пхп дебагере я не вижу, поэтому и склонен к мысли, что браузер не успевает с куками, а срабатывания брекпоинта дает ему время на их установку.

Кто-то с вас сталкивался подобной проблемой. Какие есть варианты решения?

Повторюсь, что без редиректов сделать не можно, т.к придется переписывать код ядра. Также я почитал, что есть разные статусы редиректов (3xx). Возможно нужно шаманить с ними. Я не знаю.



Последнее исправление: cetjs2 (всего исправлений: 1)

попробуй отловить не добагером, а просто дописывай всю дебаг инфу в текстовый файл.

kiotoze ★★★★
()

htacceess кажется это, в нем все дело

dima1981
()

Открой access.log и смотри сколько именно раз к тебе обращается Chrome и другие браузеры, дебаггер тебе тут не нужен. Проблема точно не в куках. Возможно, ты делаешь редирект некорректно.

WARNING ★★★★
()

лучше порялдок в коде наведи, если куки не устанавиваются то потому что твое условие не срабатывает, «браузер» не может «неуспевать», ты можешь тупить.

anonymous
()
Ответ на: комментарий от anonymous

идеально для тебя будет вынести редиректы во второй модуль, когда в файле будет только код проверки условий и редиректа ты быстро поймешь в чем ошибался,

file1.php -> redir.php (установка кук) -> file1.php

anonymous
()
Ответ на: комментарий от WARNING

Все как ожидалось:

127.0.0.1 - - [27/Jan/2017:13:28:13 +0200] «GET /en/ HTTP/1.1» 302 1112 "-" «Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36» 127.0.0.1 - - [27/Jan/2017:13:28:13 +0200] «GET /en/ HTTP/1.1» 200 9072 "-" «Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36»

Всего 2 запроса. 1-ый запрос редирект с 302 статусом, и второй запрос загрузка страницы с 200 статусом.

zoviw
() автор топика
Ответ на: комментарий от anonymous

да как бы они сейчас так и работает.

zoviw
() автор топика
Ответ на: комментарий от anonymous

мое условия срабатывает, и это видно как в дебагере, так и в логах. Я не понимаю почему хром такое возвращает.

zoviw
() автор топика
Ответ на: комментарий от kiotoze

попробовал. На нажатия кнопки назад идет 2 запроса. 1-ый на редирект и второй на загрузку страницы. Так почему хром такое пишет? Когда там всего один редирект.

zoviw
() автор топика
Ответ на: комментарий от zoviw

Ну ещё можно в developer консоли Хрома посмотреть, как именно он запросы кидает. Может напишет чего интересного.

А ещё, надо проверить на другой машине. Бывают совершенно потрясающие глюки в конкретном экземпляре браузера.

WARNING ★★★★
()
Ответ на: комментарий от zoviw

как идея, попробуй в урл добавить какой-то уникальный хеш. Чтобы он думал что это разные страницы.
?t=hash()

kiotoze ★★★★
()
Ответ на: комментарий от kiotoze

Я тоже думал над этим. Но думаю со стороны сео это не очень хорошо.

zoviw
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.