Cập nhật: Vấn đề Drupal # 1796596 đã được cam kết kể từ Redirect 1.0-rc2 (tháng 6 năm 2015). Giải pháp chính xác cho vấn đề này bây giờ là nâng cấp lên bản phát hành ổn định mới nhất của mô-đun Redirect, sau đó chạy cập nhật cơ sở dữ liệu. Bất kỳ chuyển hướng tròn nào bạn có sẽ được làm sạch một cách an toàn.
Vấn đề này xảy ra do một lỗi trong mô-đun chuyển hướng. Bạn kích hoạt nó bằng cách thay đổi URL của một trang (hoặc có thể chỉ là tiêu đề của trang đó, nếu bạn đang sử dụng pathauto) và sau đó thay đổi nó trở lại như trước đây.
Ví dụ: giả sử tôi có một trang gọi là "công ty" và tôi đã thay đổi tiêu đề thành "Công ty của chúng tôi" (đã thay đổi bí danh URL thành công ty của chúng tôi). Sau đó, tôi quyết định tôi thực sự thích nó theo cách đầu tiên vì vậy tôi chỉnh sửa lại nút và thay đổi tiêu đề thành "Công ty". Tại thời điểm đó, thông báo lỗi " Rất tiếc, có vẻ như yêu cầu này đã cố gắng tạo một vòng lặp vô hạn. Chúng tôi không cho phép những thứ như vậy ở đây. Chúng tôi là một trang web chuyên nghiệp! " Sẽ bắt đầu hiển thị trên trang Công ty.
Có ba cách để khắc phục điều này, tùy thuộc vào cách dễ nhất cho bạn. Họ có độ khó / bản lĩnh từ trên xuống dưới.
Phương pháp Drupal / PHP
Có một lỗi Drupal dài về chủ đề: Vấn đề # 1796596 và có một bản vá hoạt động tốt giúp khắc phục vấn đề trong nhận xét # 124 .
Hy vọng rằng bản sửa lỗi này sẽ sớm được cam kết vào mô-đun Redirect để tải xuống. Tuy nhiên, đã hơn một năm nay không có dấu hiệu tiến triển nào trên mặt trận đó.
Phương thức SQL
Cách khắc phục nhanh nhất cho sự cố là với truy vấn SQL tới cơ sở dữ liệu, với nội dung như bên dưới. HÃY CẨN THẬN và chỉ thử phương pháp này nếu bạn biết bạn đang làm gì - trước tiên hãy thử nó trên bản sao phát triển của trang web và đảm bảo bạn có bản sao lưu và kiểm tra các thay đổi ngay sau đó trong trường hợp bạn cần quay lại. Cẩn thận hơn và kiểm tra truy vấn đầu tiên cực kỳ tốt nếu bạn đang sử dụng i18n ... Chạy truy vấn đầu tiên để hiển thị những gì sẽ bị xóa và lần thứ hai thực sự xóa.
--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;
Nếu bạn không biết cách áp dụng các bản vá hoặc chạy các truy vấn SQL, thì bạn cần khắc phục sự cố bằng tay. Đừng lo lắng, điều này thực sự khá dễ thực hiện (nhưng tốn thời gian so với các phương pháp khác):
Phương pháp thủ công:
Đối với mỗi trang hiển thị thông báo cảnh báo:
- Chỉnh sửa trang
- Cuộn xuống dưới cùng của mẫu chỉnh sửa
- Lưu ý URL chính của trang. Nó được hiển thị bên dưới "cài đặt đường dẫn URL", ví dụ: "Bí danh: công ty" có nghĩa là URL của trang là "công ty". Bạn có thể nhấp vào "Cài đặt đường dẫn URL" để truy cập phần của nó và xác nhận bí danh URL nếu bạn không chắc chắn.
- Bây giờ bấm vào "chuyển hướng URL". Các chuyển hướng đến trang hiện tại sẽ được hiển thị. Sẽ có ít nhất một chuyển hướng giống với bí danh URL mà bạn đã lưu ý trong bước 3. Có thể nhiều hơn một chuyển hướng trong danh sách này sẽ khớp với bí danh URL.
- Xóa tất cả các chuyển hướng giống như bí danh URL. Đây là những dữ liệu vấn đề gây ra vòng lặp và thông báo lỗi được hiển thị.
- Khi không còn chuyển hướng trong "Chuyển hướng URL" khớp chính xác với bí danh URL của trang sự cố trong cài đặt đường dẫn URL, thông báo lỗi sẽ biến mất.