TrueURL
TrueURL

메뉴

무료 리디렉션 도구

리디렉션 루프 검사

브라우저에 “리디렉션한 횟수가 너무 많습니다”라는 오류가 표시된다면 사이트가 브라우저를 같은 경로로 계속 돌려보내고 있는 것입니다. TrueURL은 루프가 닫힐 때까지 리디렉션을 따라가고 관련된 모든 URL을 보여 줍니다.

리디렉션 루프란?

리디렉션 루프는 URL A가 URL B로 리디렉션되고, B가 직접 또는 다른 홉을 거쳐 다시 A로 리디렉션될 때 발생합니다. 브라우저는 약 20번 리디렉션을 따라간 뒤 오류를 표시하며 포기합니다. Chrome과 Edge에서는 ERR_TOO_MANY_REDIRECTS(“example.com에서 리디렉션한 횟수가 너무 많습니다.”), Firefox에서는 The page isn't redirecting properly, Safari에서는 Too many redirects occurred가 표시됩니다. 검색엔진은 루프에 갇힌 페이지를 색인할 수 없습니다.

TrueURL이 루프를 감지하는 방법

TrueURL은 요청하는 모든 URL을 그 시점의 요청 메서드 및 보유 중인 쿠키와 함께 기록합니다. 어떤 홉이 같은 상태로 이미 요청했던 URL로 되돌아가면 체인은 절대 끝날 수 없으므로, 결과에서 루프가 닫히는 홉을 강조해 표시합니다.

TrueURL은 브라우저처럼 쿠키를 유지하기 때문에 실제 루프와 정상적인 쿠키 핸드셰이크를 구분할 수 있습니다. 쿠키 핸드셰이크란 사이트가 쿠키를 설정한 뒤 같은 URL로 한 번 다시 보내는 동작을 말합니다. 매번 상태가 바뀌면 고급 설정의 최대 홉 수 제한(최대 50)에 도달할 때까지 체인을 계속 따라갑니다. 제한에 도달한 체인도 대개는 끝없는 루프입니다. 예를 들어 홉마다 새 쿼리 매개변수를 추가하는 경우가 그렇습니다.

리디렉션 루프의 흔한 원인

  • 프록시나 CDN 뒤의 HTTP와 HTTPS: CDN은 HTTP로 서버에 접속하는데(Cloudflare의 Flexible SSL 모드처럼) 서버는 모든 HTTP 요청을 HTTPS로 리디렉션합니다. 그러면 브라우저는 다시 HTTPS를 요청하고, CDN은 다시 HTTP로 가져오는 일이 끝없이 반복됩니다. Full (strict) 모드를 사용하거나 HTTPS 리디렉션을 한 계층에서만 처리하세요.
  • 충돌하는 www 규칙: 한 규칙은 www를 추가하고, 다른 규칙(주로 CMS나 호스팅 관리 패널에 있는 규칙)은 이를 제거합니다.
  • 충돌하는 후행 슬래시 규칙: 서버는 슬래시를 추가하고 애플리케이션은 이를 제거합니다.
  • CMS 주소 설정: 예를 들어 WordPress의 WordPress 주소(URL) 또는 사이트 주소(URL) 값이 사이트가 실제로 제공되는 도메인이나 스킴과 일치하지 않는 경우입니다.
  • 로그인, 동의, 지역 리디렉션: 특정 쿠키가 없는 방문자를 로그인, 동의, 국가 선택 페이지로 보내고 그 페이지가 다시 원래 페이지로 돌려보내는데, 쿠키가 설정되지 않거나 받아들여지지 않는 경우입니다.

리디렉션 루프 해결 방법

  1. 여기서 URL을 검사하고 어떤 URL이 반복되는지, 어느 홉이 되돌려 보내는지 기록하세요.
  2. 해당 홉의 Server, Via, CF-Ray, X-Powered-By 같은 응답 헤더를 보고 CDN, 웹 서버, 애플리케이션 중 어느 계층이 리디렉션을 보냈는지 확인하세요.
  3. 그 규칙 하나만 수정하거나 비활성화한 뒤 다시 검사하세요. 한 번에 한 계층씩만 변경하세요.
  4. 브라우저에서 테스트하기 전에 해당 사이트의 캐시와 쿠키를 삭제하세요. 캐시된 301과 오래된 쿠키 때문에 루프를 고친 뒤에도 루프가 계속될 수 있습니다.

가이드

자주 묻는 질문

“리디렉션한 횟수가 너무 많습니다”(ERR_TOO_MANY_REDIRECTS) 오류는 무슨 뜻인가요?

리디렉션 체인이 20번의 리디렉션 후에도 끝나지 않을 때 Chrome이 표시하는 오류입니다. 거의 항상 루프가 원인이며, 사이트의 리디렉션 규칙이 서로 충돌한다는 뜻입니다. 위에서 URL을 검사해 어떤 URL이 반복되는지 확인하세요.

리디렉션 루프가 일부 방문자에게만 발생할 수도 있나요?

네. 쿠키, 언어, 위치, 기기에 따라 발생하는 루프는 그 조건에 해당하는 방문자에게만 나타납니다. 고급 설정에서 해당 쿠키, Accept-Language 헤더, 모바일 User-Agent를 추가하고 다시 검사해 재현해 보세요. 다만 방문자 위치에 따라 발생하는 루프는 요청이 항상 Cloudflare 네트워크에서 나가기 때문에 재현할 수 없습니다.

브라우저에서 쿠키를 삭제하면 루프가 해결되는 이유는 무엇인가요?

그렇다면 쿠키 기반 루프였던 것입니다. 오래되었거나 충돌하는 쿠키 때문에 사이트가 브라우저를 계속 같은 곳으로 돌려보낸 것입니다. 쿠키를 삭제하면 브라우저의 상태는 초기화되지만, 같은 쿠키를 받는 모든 방문자에게는 버그가 그대로 남아 있습니다. 고급 설정의 쿠키 필드를 사용해 여기서 재현해 보세요.

브라우저에서는 페이지가 정상인데 TrueURL에서는 루프가 발견되는 이유는 무엇인가요?

브라우저가 로그인되어 있거나, 동의 쿠키가 있거나, HSTS 항목이나 캐시된 리디렉션 덕분에 홉 하나를 건너뛰고 있을 수 있습니다. TrueURL은 처음 방문한 사용자나 크롤러처럼 쿠키와 기록이 없는 상태에서 시작합니다. 사이트가 데이터 센터에서 오는 요청을 다르게 처리하는 경우가 아니라면, TrueURL이 루프를 발견했을 때 신규 방문자와 크롤러도 같은 루프에 빠질 가능성이 높습니다.

루프와 최대 홉 수 도달은 어떻게 다른가요?

루프는 TrueURL이 같은 상태로 이미 요청했던 URL로 되돌아왔다는 뜻이므로 체인이 절대 끝날 수 없습니다. 최대 홉 수 도달은 정확히 반복되는 URL은 없었지만 설정된 횟수만큼 리디렉션한 뒤 멈췄다는 뜻입니다. 그런 체인은 언젠가 끝날 수도 있지만, 그만큼 긴 체인은 어느 쪽이든 문제입니다. 더 멀리 따라가 보려면 최대 홉 수를 50으로 늘리세요.

CDN 때문에 리디렉션 루프가 발생할 수 있나요?

네, 가장 흔한 원인 중 하나입니다. 서버는 HTTPS를 강제하는데 CDN이 HTTP로 서버와 통신하거나, CDN과 서버가 www와 non-www 사이에서 서로 반대 방향으로 리디렉션하면 모든 요청이 둘 사이를 계속 오가게 됩니다. 각 홉의 응답 헤더를 보면 어느 계층이 응답했는지 알 수 있습니다.