Aktualizacja: Problem Drupal nr 1796596 został popełniony od wersji przekierowania 1.0-rc2 (czerwiec 2015). Prawidłowym rozwiązaniem tego problemu jest teraz aktualizacja do najnowszej stabilnej wersji modułu Przekierowanie, a następnie uruchomienie aktualizacji bazy danych. Wszelkie przekierowania okrężne zostaną bezpiecznie usunięte.
Ten problem pojawił się z powodu błędu w module przekierowania. Wywołujesz go, zmieniając adres URL strony (a może po prostu jej tytuł, jeśli używasz pathauto), a następnie zmieniając go z powrotem na poprzedni.
Załóżmy na przykład, że mam stronę o nazwie „firma” i zmieniłem tytuł na „Nasza firma” (która zmieniła alias adresu URL na naszą firmę). Potem zdecydowałem, że tak naprawdę wolę ten pierwszy sposób, więc ponownie edytuję węzeł i zmieniam tytuł z powrotem na „Firma”. W tym momencie komunikat o błędzie „ Ups, wygląda na to, że to żądanie próbowało utworzyć nieskończoną pętlę. Nie zezwalamy na takie rzeczy tutaj. Jesteśmy profesjonalną stroną internetową! ” Zacznie się pojawiać na stronie firmy.
Istnieją trzy sposoby rozwiązania tego problemu, w zależności od tego, co jest dla ciebie najłatwiejsze. Różnią się poziomem trudności / odwagą od góry do dołu.
Metoda Drupal / PHP
Jest długi błąd Drupala na ten temat: Problem # 1796596 i jest dobra działająca łatka, która naprawia problem w komentarzu # 124 .
Mam nadzieję, że ta poprawka wkrótce zostanie zatwierdzona w module Przekierowanie do pobrania. Jednak minął już ponad rok i nie widać żadnych postępów w tej dziedzinie.
Metoda SQL
Najszybszym rozwiązaniem problemu jest zapytanie SQL do bazy danych, z czymś takim jak poniżej. UWAŻAJ i wypróbuj tę metodę tylko wtedy, gdy wiesz, co robisz - wypróbuj ją najpierw w kopii rozwojowej witryny i upewnij się, że masz kopię zapasową, a następnie przetestuj zmiany na wypadek, gdybyś musiał wycofać się. Zachowaj szczególną ostrożność i dobrze przetestuj pierwsze zapytanie, jeśli używasz i18n ... Uruchom pierwsze zapytanie, aby pokazać, co zostanie usunięte, a drugie, aby faktycznie usunąć.
--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;
Jeśli nie wiesz, jak zastosować poprawki lub uruchomić zapytania SQL, musisz rozwiązać problem ręcznie. Nie martw się, w rzeczywistości jest to dość łatwe (ale czasochłonne w porównaniu do innych metod):
Metoda ręczna:
Dla każdej strony, na której wyświetlał się komunikat ostrzegawczy:
- Edytuj stronę
- Przewiń na dół formularza edycji
- Zanotuj główny adres URL strony. Jest pokazany pod „Ustawieniami ścieżki URL”, np. „Alias: firma” oznacza, że URL strony to „firma”. Możesz kliknąć „Ustawienia ścieżki URL”, aby przejść do jej sekcji i potwierdzić alias adresu URL, jeśli nie jesteś pewien.
- Teraz kliknij „Przekierowania URL”. Zostaną wyświetlone przekierowania do bieżącej strony. Będzie co najmniej jedno przekierowanie, które jest takie samo jak alias adresu URL zanotowany w kroku 3. Możliwe jest, że więcej niż jedno przekierowanie na tej liście będzie pasowało do aliasu adresu URL.
- Usuń wszystkie przekierowania, które są takie same jak alias adresu URL. Są to dane problemowe, które powodują wyświetlenie pętli i komunikat o błędzie.
- Gdy w sekcji „Przekierowania URL” nie będzie już żadnych przekierowań, które dokładnie pasują do aliasu URL strony problemowej w ustawieniach ścieżki URL, komunikat o błędzie zniknie.