Очень долго мучался - уже было начал думать, что это магия, но наконец выследил закономерность. Суть проблемы: Фреймуорк: Codeigniter. Есть контроллер admin с методом logout (выход из режима администрирования), чтобы обратиться к этому контроллеру нужно набрать адрес http://site/admin/logout. Есть навигационная панель администратора, где каждый пункт меню (каждая ссылка) обрамлена контейнером, при нажатии на который осуществляется переход по ссылке, которую он содержит: Код (Text): .click(function () { location.href = $(this).find('> a.navigation_item').attr('href'); }); Суть работы контроллера: он проверяет, админ ли это, если да - снимает администратора и перенаправляет на главную страницу, если нет - выводит ошибку 404 (нечего простому смертному знать о существовании такой страницы). Перенаправление: Код (Text): header('Location: '.$uri, true, 302); //$uri == 'http://upp/' exit; Есть 3 способа обратится к контролеру: нажать на ссылку, на контейнер вокруг ссылки (location.href) или вбить в строку браузера непосредственно адрес. В последних двух случаях отрабатывает все хорошо - снимает админа и переводит. В первом же происходит нечто интересное, на сколько я смог понять: оно так же снимает админа, потом почему-то редиректит на самого себя и соответственно уже без админа выводит 404. Почему так?
Извеняюсь может быть я не так понял, вы при помощи js определяете администратора и делаете подобные манипуляции? или проверка уже средствами php происходит?
Естественно в PHP. Проблема решена, а заключалась она в том что при нажатии на ссылку, событие встплывало и почему-то сценарий вызывался 2 раза. event.stopPropagation() решило проблему.