Ошибка TOO MANY REDIRECTS

Материал из Umicms
Версия от 11:26, 5 июня 2013; Mad grant (обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к:навигация, поиск

Актуально для версии 2.9

Проблемы с избыточным количеством переадресаций частое явление. Возникать они могут из за множества различных причин, но суть всегда одна, переадресация ведет на тот же адрес откуда она была вызвана.
Организовать редиректы можно множеством различных способов, некоторые из них описаны в статье Редирект. И по этой причине часто могут возникать проблемы когда один разработчик сделал перенаправление в одном месте, а другой в другом или сама CMS его добавила, после чего возникает рекурсивное перенаправление и страница, грубо говоря, закрыта от просмотра.
Решение этой проблемы занимает не так много времени как кажется. Следуя следующей инструкции можно исправить сложившуюся ситуацию, в 95% случаев!

1. В Базе Данных очищаем таблицу cms3_redirects, предварительно сделав её дамп.

 Даже если вы не добавляли в неё никаких записей, таблица могла сама заполниться при перемещении\переименовании страниц 
в административной части UMI.CMS. Если вы не хотите чтобы это происходило, эту функцию всегда можно отключить в модуле
конфигурация, убрав галочку у пункта - "Перенаправлять на перемещенные страницы".

Очистить таблицу и сделать её дамп можно следующими запросами:

 CREATE  TABLE  `db_name`.`cms3_redirects_dump` (  `id` int( 11  )  NOT  NULL  AUTO_INCREMENT ,
 `source` text NOT  NULL ,
 `target` text NOT  NULL ,
 `status` int( 10  ) unsigned DEFAULT  '301',
 PRIMARY  KEY (  `id`  ) ,
 KEY  `source` (  `source` ( 255  )  )  ) ENGINE  = InnoDB  DEFAULT CHARSET  = utf8;

SET SQL_MODE='NO_AUTO_VALUE_ON_ZERO';

INSERT INTO `db_name`.`cms3_redirects_dump` SELECT * FROM `db_name`.`cms3_redirects`;

TRUNCATE TABLE `db_name`.`cms3_redirects`;

2. Если очистка таблицы не помогла, то возможно проблема заключается в кастомизированом файле .htaccess. Для устранения проблем в нем, можно переименовать этот файл, например в .htaccess_backup, и заменив его примером из статьи 2.8_.htaccess или переименовав файл .htaccess_old (Это файл который система скопировала с оригинала перед внесением в него изменений).

3. Если и это не решило проблему, тогда в используемых шаблонах ищем макросы %content redirect()% и %users registrate()%. Если они были найдены, комментируем их (так же их стоит поискать в контенте неработающих страниц). Теперь проверяем что все работает.

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