508 Loop Detected
WebDAV에 한정된 사용법
508 Loop Detected 상태 코드는 클라이언트가 디렉터리 전체에 대한 WebDAV 요청을 제출했고 그 결과가 같은 트리 안에 대상을 만들어 낼 때 발생합니다. 이는 Depth: Infinity와 함께 무한한 요청/응답 루프를 만들어 내며, 서버는 작업 전체를 중단시킵니다.
cPanel / CloudLinux에 한정된 사용법
508 Resource Limit Is Reached 상태 코드는 CloudLinux와 함께 cPanel을 운영하는 공유 호스팅 환경에서 계정의 리소스 한도 중 하나가 초과되었을 때 생성됩니다. 리소스 한도의 예로는 CPU 사용량, 물리 메모리, I/O 처리량, 동시 프로세스 수(엔트리 프로세스)가 있습니다.
SEO 영향
검색 엔진은 508을 다른 5xx 서버 오류와 동일하게 취급합니다. 실패가 지속되면 크롤링 속도가 줄고 결국 해당 URL이 색인에서 제거됩니다.
예시
WebDAV 클라이언트가 재귀적인 디렉터리 목록을 요청합니다. 서버는 컬렉션 계층 안에서 바인딩 루프를 감지하고 요청을 중단합니다.
요청
PROPFIND /shared/ HTTP/1.1
Host: example.com
Depth: infinity
Content-Type: application/xml
응답
HTTP/1.1 508 Loop Detected
Content-Type: text/html; charset=UTF-8
Content-Length: 174
<html>
<head>
<title>Loop Detected</title>
</head>
<body>
<p>The server detected an infinite loop
while processing the directory tree.</p>
</body>
</html>
해결 방법
WebDAV의 경우(508 Loop Detected):
Depth: infinity를 사용한 PROPFIND가 순환 바인딩에 걸린 것으로, 어떤 컬렉션이 상위나 자기 자신을 다시 참조하는 상황입니다.
cPanel / CloudLinux의 경우(508 Resource Limit Is Reached):
호스팅 계정이 CPU, 메모리, I/O, 또는 엔트리 프로세스 수 중 하나의 리소스 한도를 초과한 것입니다.
코드 참고
.NET
HttpStatusCode.LoopDetected
Rust
http::StatusCode::LOOP_DETECTED
Rails
:loop_detected
Go
http.StatusLoopDetected
Symfony
Response::HTTP_LOOP_DETECTED
Python3.5+
http.HTTPStatus.LOOP_DETECTED
Apache HttpComponents Core
org.apache.hc.core5.http.HttpStatus.SC_LOOP_DETECTED
Angular
@angular/common/http/HttpStatusCode.LoopDetected