Оновлення: випуск Друпалу №1796596 розпочато станом на Redirect 1.0-rc2 (червень 2015 року). Правильне рішення цієї проблеми зараз - оновити до останнього стабільного випуску модуля Redirect, а потім запустити оновлення бази даних. Будь-які кругові переадресації у вас будуть безпечно очищені.
Ця проблема виникла через помилку в модулі переадресації. Ви запускаєте її, змінюючи URL-адресу сторінки (або, можливо, лише її назву, якщо ви використовуєте патавто), а потім змінюєте її назад на те, що раніше було.
Наприклад, скажімо, що у мене була сторінка під назвою "компанія", і я змінив назву на "Наша компанія" (яка змінила псевдонім URL на нашу компанію). Тоді я вирішив, що насправді вважаю за краще перший спосіб, щоб я знову відредагував вузол і змінив назву назад на "Компанія". У цей момент повідомлення про помилку " На жаль, цей запит намагався створити нескінченний цикл. Таких речей ми тут не дозволяємо. Ми є професійним веб-сайтом! ". Почне відображатися на сторінці компанії.
Існує три способи виправити це, залежно від того, що вам найлегше. Вони варіюються у складності / сміливості зверху вниз.
Метод Drupal / PHP
Існує довгий помилка Drupal на цю тему: Випуск № 1796596, і є хороший робочий патч, який виправляє проблему в коментарі №124 .
Сподіваємось, це виправлення незабаром буде здійснено в модуль перенаправлення для завантаження. Однак минуло вже рік, не маючи жодних ознак прогресу на цьому фронті.
Метод SQL
Найшвидше вирішити проблему - це запит SQL до бази даних, якийсь подібний нижче. Будьте уважні, і спробуйте цей метод, лише якщо ви знаєте, що ви робите - спершу спробуйте його на копії для розробки сайту та переконайтесь, що у вас є резервна копія та протестуйте зміни одразу після цього, якщо вам потрібно відкотитись. Будьте дуже обережні і добре випробуйте перший запит, якщо ви використовуєте i18n ... Запустіть перший запит, щоб показати, що було б видалено, а другий насправді виконувати видалення.
--Show records to be deleted:
SELECT r.rid, r.language, r.source, r.redirect
FROM redirect r INNER JOIN url_alias u ON r.source = u.alias
AND r.redirect = u.source AND r.language = u.language;
--Delete redirects shown in above query:
DELETE r FROM redirect r INNER JOIN url_alias u ON r.source = u.alias
AND r.redirect = u.source AND r.language = u.language;
Якщо ви не знаєте, як застосувати патчі або запустити SQL запити, тоді вам потрібно виправити проблему вручну. Не хвилюйтесь, це насправді зробити досить просто (але забирає багато часу в порівнянні з іншими методами):
Ручний метод:
Для кожної сторінки, на якій відображається попереджувальне повідомлення:
- Відредагуйте сторінку
- Прокрутіть до нижньої частини форми редагування
- Зверніть увагу на головну URL-адресу сторінки. Він відображається під "Налаштуваннями URL-адреси шляху", наприклад "Псевдонім: компанія" означатиме URL-адресу сторінки "компанія". Ви можете натиснути "Налаштування шляху до URL-адреси", щоб відвідати його розділ і підтвердити псевдонім URL-адреси, якщо ви не впевнені.
- Тепер натисніть «Переадресація URL». Буде показано переспрямування на поточну сторінку. Буде щонайменше одне переспрямування, яке є таким самим, як псевдонім URL-адреси, який ви зазначили на кроці 3. Можливо, більше, ніж одне переадресація у цьому списку буде відповідати псевдоніму URL-адреси.
- Видаліть усі переадресації, які збігаються з псевдонімом URL. Це дані про проблеми, які спричиняють показ циклу та повідомлення про помилку.
- Коли більше не буде переспрямувань у розділі "Переадресація URL-адрес", які б точно відповідали псевдоніму URL-адреси проблемної сторінки в налаштуваннях шляху URL-адреси, повідомлення про помилку буде відсутнє.