Помогите, пожалуйста, решить проблему.
На сайте (Drupal 6.16) есть пять ролей - анонимный пользователь, зарегистрированный пользователь, редактор, разработчик и админ.
Когда в систему входит редактор, разработчик или админ - всё работает без проблем.
Но когда входит простой зарегистрированный пользователь (любой), образуется бесконечная переадресация - Error 310: ERR_TOO_MANY_REDIRECTS. И эту ошибку начинают выдавать все страницы сайта, пока пользователь не выходит через ручной набор server.ru/logout.
Параллельный вход админом через другой браузер показывает, что зарегистрированный пользователь в системе.
От браузера это не зависит.
По всей видимости связано с отсутствием у зарегистрированного пользователя каких-то прав.
Но на первый взгляд все необходимые права у этой роли есть, а перебирать каждое отдельное право мучительно долго.
Может кто сталкивался с такой проблемой? Подскажите в чём может быть дело.
Комментарии
Логи веб-сервера читали? Может быть там есть информация, которая вам поможет? error.log
error.log пустой.
Какие-нибудь дополнительные правила для mod_rewrite в .htaccess не писали? Такое часто бывает если эти правила зацикливаются в итоге.
Вроде ничего не менял.
Прилагаю .htaccess, посмотрите, если будет возможность.
Непонятно, когда это началось. Но изначально такого не было.
Может, с хостом что не так. У нас nichost.
Вроде ничего подозрительного, но на всякий закомментите и попробуйте снова
RewriteCond %{HTTP_HOST} ^www\.vesta-baby\.ru$ [NC]
RewriteRule ^(.*)$ http://vesta-baby.ru/$1 [L,R=301]
Не помогло.
Похоже, что-то с настройками сервера.
Когда логинится любая роль, кроме админа, сайт со всех страниц начинает перенаправлять на страницу user.
Сомнительно, чтобы в настройках друпала было что-то похожее.
Да, тут что-то нетривиальное похоже, но не думаю что дело только в настройках сервера.
Попробуйте для начала забакапить существующий Друпал и поставить с нуля последний друпал без доп. модулей. Будет ли проблема наблюдаться и там? Если нет - однозначно Друпал виноват, вернее какой-то кривой код или настройки
UPD
Отключил все модули, включая дополнительные друпаловские. Не помогло.
Залил стандартный .htaccess - не помогло
Сделал зеркало на другом серваке - тот же глюк.
Осталось три предположения:
1. Что-то напартачено в теме
2. Что-то напартачено в коренных модулях самого друпала
3. Что-то напартачено в базе данных (какой-то сбой при записи или настройки от старого модуля).
1. Смените на дефолтную и проверьте
2. Это очень вряд ли
3. Включите отладку запросов к БД, отследите повторяющиеся, попробуйте сделать выводы, где возникает проблема. Попробуйте включить отладку PHP и найти тот фрагмент откуда происходит зацикливание
Докопался.
Ошибка исчезает, если дать ролям разрешение администрировать пользователей.
Есть этому какое-то объяснение? И как мне уберечь пользователей от администрирования самих себя и друг-друга?
Может, надо ещё какое-то право убрать? Пользователи администрируются сейчас любой авторизованной ролью независимо от наличия права доступа к административным страницам.
Объяснение всегда есть. Надо только до него докопаться. Попробуйте понять какой код выполняется если такие права есть и если таких прав нет. Тогда собственно можно попытаться найти тот фрагмент кода, где возникает редирект.
Был бы я программистом, может и докопался бы...
Но я даже не знаю, где и что искать.