Ошибка открытия статьи в drupal 6, редирект на Главную
Ошибка с редиректом на главную при открытии статьи в Drupal 6 часто связана с повреждением или неполнотой таблицы node_access. В этой таблице хранятся права доступа к материалам, и если в ней нет базовой записи, система считает, что анонимные (и не только) пользователи не имеют прав на просмотр контента, и перенаправляет их на главную .
Вот пошаговое решение.
🔧 Шаг 1: Пересборка прав через интерфейс
Самый безопасный способ — заставить Drupal пересоздать таблицу node_access автоматически.
Перейдите по адресу:
/admin/content/node-settings(или/admin/content/node-settings/rebuild).Нажмите кнопку «Rebuild permissions» (Пересобрать права) .
Если кнопки нет или пересборка не помогает, переходите к шагу 2.
🗄️ Шаг 2: Прямая проверка и правка таблицы node_access
Если автоматическая пересборка не сработала, нужно проверить, что находится в базе данных.
Откройте базу данных вашего сайта (например, через phpMyAdmin).
Найдите таблицу
node_access.В нормальном состоянии (когда нет специальных модулей доступа) в ней должна быть ровно одна строка со следующими значениями :
| nid | gid | realm | grant_view | grant_update | grant_delete |
|---|---|---|---|---|---|
| 0 | 0 | all | 1 | 0 | 0 |
Что делать:
Если таблица пуста или в ней нет строки с
nid = 0, выполните SQL-запрос для вставки недостающей записи :
1 2 | <span class="token keyword">INSERT</span> <span class="token keyword">INTO</span> node_access <span class="token punctuation">(</span>nid<span class="token punctuation">,</span> gid<span class="token punctuation">,</span> realm<span class="token punctuation">,</span> grant_view<span class="token punctuation">,</span> grant_update<span class="token punctuation">,</span> grant_delete<span class="token punctuation">)</span> <span class="token keyword">VALUES</span> <span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token string">'all'</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">;</span> |
Если в таблице есть другие строки (например, с
nidконкретного узла), и вы не используете модули вроде Organic Groups или Taxonomy Access, их лучше удалить, оставив только строку(0,0,'all',1,0,0).
⚙️ Шаг 3: Альтернатива через Drush (если есть доступ к командной строке)
Если у вас установлен Drush, можно запустить пересборку прямо из консоли. Для Drupal 6 команда будет такой :
1 | drush <span class="token builtin class-name">eval</span> <span class="token string">'node_access_rebuild();'</span> |
Для больших сайтов лучше использовать пакетный режим, чтобы избежать тайм-аута:
1 | drush <span class="token builtin class-name">eval</span> <span class="token string">'node_access_rebuild(TRUE);'</span> |
💡 Почему это происходит?
Таблица node_access может «терять» базовую запись при установке/обновлении модулей доступа, при миграции сайта или из-за сбоя в процессе сохранения материала . Вставка строки (0,0,'all',1,0,0) восстанавливает стандартное правило: «разрешить просмотр всем» .
После выполнения любого из этих действий обязательно очистите кэш (Configuration > Performance > Clear cached data).