업데이트 : Drupal 문제 # 1796596 은 Redirect 1.0-rc2 (2015 년 6 월)부터 커밋되었습니다. 이 문제에 대한 올바른 해결책은 이제 최신 안정적인 Redirect 모듈 릴리스로 업그레이드 한 다음 데이터베이스 업데이트를 실행하는 것입니다. 모든 순환 리디렉션은 안전하게 정리됩니다.
이 문제는 리디렉션 모듈의 버그로 인해 발생했습니다. 페이지의 URL (또는 pathauto를 사용하는 경우 제목 만)을 변경 한 다음 다시 원래 URL로 변경하여 트리거합니다.
예를 들어, "회사"라는 페이지가 있고 제목을 "회사"(URL 별칭을 회사로 변경)로 변경했다고 가정하겠습니다. 그런 다음 노드를 다시 편집하고 제목을 "회사"로 다시 변경하기 위해 실제로 첫 번째 방법을 선호하기로 결정했습니다. 이 시점에서 " 죄송합니다.이 요청으로 인해 무한 루프를 만들려고 한 것 같습니다. 여기서 허용하지 않습니다. 우리는 전문 웹 사이트입니다! "라는 회사 페이지에 표시되기 시작합니다.
가장 쉬운 방법에 따라이 문제를 해결하는 세 가지 방법이 있습니다. 그것들은 위에서 아래로 어려움 / 용감의 범위입니다.
Drupal / PHP 방법
주제에 관한 긴 Drupal 버그가 있습니다 : Issue # 1796596 그리고 comment # 124 에서 문제를 해결하는 좋은 패치가 있습니다.
이 수정 프로그램이 곧 Redirect 모듈에 다운로드되어 다운로드되기를 바랍니다. 그러나 1 년이 지났지 만 지금은 아무런 진전이 보이지 않습니다.
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 경로 설정"아래에 표시됩니다 (예 : "Alias : company")는 페이지의 URL이 "company"임을 의미합니다. 'URL 경로 설정'을 클릭하여 해당 섹션을 방문하고 확실하지 않은 경우 URL 별칭을 확인할 수 있습니다.
- 이제 "URL 리디렉션"을 클릭하십시오. 현재 페이지로 리디렉션이 표시됩니다. 3 단계에서 적어 둔 URL 별칭과 동일한 리디렉션이 하나 이상 있어야합니다.이 목록에서 둘 이상의 리디렉션이 URL 별칭과 일치 할 수 있습니다.
- URL 별명과 동일한 모든 리디렉션을 삭제하십시오. 루프 및 오류 메시지가 표시되는 문제 데이터입니다.
- "URL 리디렉션"아래에 URL 경로 설정에서 문제 페이지의 URL 별명과 정확히 일치하는 리디렉션이 더 이상 없으면 오류 메시지가 사라집니다.