404 Not Found 오류: 의미와 해결 방법
직접 답변
HTTP 404 Not Found는 서버에 연결되었지만 요청한 리소스의 현재 표현을 찾을 수 없다는 의미입니다. 먼저 URL의 철자, 대소문자 및 오래된 경로를 확인하세요. 사이트를 관리한다면 애플리케이션 route, rewrite 규칙, 배포된 파일, proxy 설정 및 내부 링크를 점검하세요.
핵심 요점
- 404는 HTTP 서버가 응답을 반환했음을 확인하는 상태이며, DNS·TLS·연결 실패와는 다릅니다.
- 잘못 입력했거나 오래되었거나 삭제 또는 이동된 URL이 일반적인 원인이지만, routing·rewrite 또는 배포 문제로 인해 유효한 경로도 실패할 수 있습니다.
- 실패하는 경로를 정상 작동하는 경로와 비교하고 서버 또는 애플리케이션 로그를 확인하면 원인을 좁힐 수 있습니다.
- 영구적으로 이동한 콘텐츠는 무조건 홈페이지가 아니라 가장 관련성 높은 대체 위치로 redirect하세요.
- 사용자 지정 Not Found 페이지도 HTTP 상태
404를 반환해야 하며,200을 반환해서는 안 됩니다.
Site Administrator
이 오류의 의미와 확인 방법
- 사이트의 다른 페이지는 로드되지만 특정 페이지에 404, Not Found 또는 사용자 지정 누락 페이지 메시지가 표시됩니다.
- 호스트 이름과 서버에 연결할 수 있는데도 API 요청이 404를 반환합니다.
- 배포, 마이그레이션, permalink 변경 또는 애플리케이션 업데이트 후 정상 작동하던 URL이 404를 반환하기 시작합니다.
- 검색 결과, 북마크 또는 내부 링크가 더 이상 사용할 수 없는 콘텐츠로 연결됩니다.
- 웹 서버, reverse proxy 또는 rewrite 설정을 변경한 후 서로 관련 없는 여러 경로가 실패합니다.
가능성이 높은 순서의 주요 원인
가능성이 높은 원인부터 낮은 원인 순서입니다.
- 잘못 입력했거나 불완전한 URL: 철자 오류, 누락된 경로 구성 요소 또는 잘못된 대소문자로 인해 존재하지 않는 리소스를 가리킵니다.
- 삭제되거나 이동된 콘텐츠: 관련 redirect 없이 페이지나 파일이 삭제, 이름 변경 또는 다른 위치로 이동되었습니다.
- 손상된 내부 또는 외부 링크: 특히 마이그레이션이나 URL 구조 변경 후에도 링크가 이전 URL을 계속 참조합니다.
- 애플리케이션 route 누락: 배포된 애플리케이션에 요청한 페이지 또는 API endpoint가 정의되어 있지 않거나, 경로에서 잘못된 API 버전 또는 prefix를 사용합니다.
- 잘못된 rewrite 또는 permalink 규칙: Apache, Nginx, framework router 또는 CMS 설정이 유효한 경로를 의도한 handler로 전달하지 못합니다.
- 배포 또는 document root 문제: 파일, route 또는 build output이 배포되지 않았거나, 서버가 예상과 다른 디렉터리를 제공하고 있습니다.
- Reverse proxy 불일치: proxy 또는 gateway가 요청을 잘못된 애플리케이션이나 backend로 전달하여 해당 경로를 찾지 못합니다.
- 대소문자를 구분하는 경로 차이: 한 환경에서 작동하는 URL도 대소문자가 route 또는 파일 이름과 일치하지 않으면 대소문자를 구분하는 파일 시스템이나 서버에서 실패할 수 있습니다.
해결 방법
사이트를 방문하는 경우
- 철자, 대소문자, 하이픈, 파일 확장자 및 모든 경로 구성 요소를 포함하여 주소를 다시 확인하세요.
- 의심스러운 마지막 경로 구성 요소를 제거하거나 사이트 홈페이지와 내장 검색에서 이동하여 현재 페이지를 찾으세요.
- 북마크나 검색 결과를 통해 페이지에 접근했다면 동일한 URL을 반복해서 새로 고침하기보다 콘텐츠의 최신 버전을 찾아보세요.
- 신뢰할 수 있는 링크가 손상된 경우 정확한 URL과 해당 링크를 발견한 페이지를 함께 사이트 소유자에게 신고하세요.
사이트를 관리하는 경우
- 실패한 요청을 확인하세요. 정확한 경로, HTTP method, host, query string 및 실패 시간을 기록하세요. 문제가 하나의 URL, 하나의 route 계열 또는 사이트 전체에 영향을 주는지 확인하세요.
- 리소스가 존재해야 하는지 판단하세요. 콘텐츠 레코드, 배포된 파일 또는 애플리케이션 route 정의를 확인하세요. 의도적으로 삭제한 리소스는 실제로 관련성 높은 대체 위치가 없는 한 일반적으로 404로 유지해야 합니다.
- 실패하는 경로와 정상 작동하는 경로를 비교하세요. 대소문자, trailing slash, 파일 확장자, locale prefix, API 버전, route prefix 및 query 처리 방식의 차이를 확인하세요.
- routing 및 rewrite 설정을 점검하세요. 애플리케이션 router, CMS permalink, 웹 서버 규칙, document root 및 reverse-proxy 매핑을 검토하세요. 현재 설정을 보존하고 다른 route에 미칠 영향을 고려한 후, 적절한 권한이 있을 때만 설정을 변경하세요.
- 배포 상태를 확인하세요. 예상한 파일, build output, route 및 정적 asset이 배포된 release에 포함되었고 활성 서버가 의도한 release를 사용하고 있는지 확인하세요.
- 로그를 검토하세요. 웹 서버, proxy 및 애플리케이션 로그를 사용하여 어떤 구성 요소가 404를 생성했는지와 요청이 예상한 backend에 도달했는지 확인하세요. 로그를 공유하기 전에 자격 증명, token 및 개인정보를 삭제하거나 비식별화하세요.
- 링크 또는 redirect를 수정하세요. 내부 링크를 현재 경로로 업데이트하세요. 콘텐츠가 영구적으로 이동했다면 권한이 부여된 영구 redirect를 가장 가까운 동등한 대상에 설정하세요. 관련 없는 누락 URL을 홈페이지로 redirect하지 마세요.
- 오류 응답을 확인하세요. 원래 누락된 URL을 요청하고 HTTP 상태
404를 반환하는지 확인하세요. 사용자 지정 오류 페이지가 유용할 수 있지만, 누락된 리소스를 오해를 유발하는 성공적인200응답으로 바꾸어서는 안 됩니다. - 영향을 받은 경로를 다시 테스트하세요. 변경 후 원래 URL, 대체 URL(있는 경우), 대표적인 정상 작동 route 및 관련 API method를 확인하세요. 이후 404 로그를 모니터링하여 남아 있는 손상된 링크를 확인하세요.
예방 및 해결 확인 방법
- 마이그레이션, redesign 및 URL 구조 변경 전후에 broken-link 검사를 실행하세요.
- 영구적으로 이동하는 중요한 콘텐츠에는 문서화된 redirect를 유지하세요.
- 각 배포의 일부로 대표적인 페이지, asset 및 API route를 테스트하세요.
- 경로의 대소문자, trailing slash, locale prefix 및 API 버전을 명시적인 routing 결정으로 다루세요.
- 웹 서버, reverse proxy 및 애플리케이션 routing 설정을 변경 관리 대상으로 유지하세요.
- 자주 요청되는 404 경로를 모니터링하여 손상된 내부 링크, 오래된 연동 및 반복되는 사용자 요청을 파악하세요.
- 계속 제공하거나 색인되어야 하는 콘텐츠에는 안정적인 URL을 유지하세요.
- 사용자 지정 오류 템플릿이 올바른 HTTP 상태를 유지하도록 하세요.
외부 도움을 받아야 할 때
route가 존재해야 하는데 router와 서버의 동작이 일치하지 않거나, 배포로 인해 여러 URL이 사라지거나, rewrite 또는 proxy 변경이 사이트의 광범위한 영역에 영향을 주는 경우 사이트·애플리케이션·인프라 담당자에게 에스컬레이션하세요. 정확한 경로, HTTP method, 예상 대상, 처음 확인한 시간, 최근 배포 또는 설정 변경 사항 및 관련 로그의 비식별화된 내용을 제공하세요. 운영 환경에서는 권한, rollback 계획 및 영향을 받지 않은 route 테스트 없이 광범위한 routing 또는 redirect 변경을 수행하지 마세요.
자주 묻는 질문
404는 웹사이트 전체가 중단되었다는 의미인가요?
아니요. 404는 요청한 리소스를 찾지 못했다는 의미입니다. 같은 host의 다른 페이지, 파일 또는 API route는 정상적으로 작동할 수 있습니다.
404는 DNS 또는 SSL 인증서 문제로 발생하나요?
일반적으로 그렇지 않습니다. 404는 서버 또는 애플리케이션이 반환하는 HTTP 응답인 반면, DNS·TLS·연결 실패는 정상적인 HTTP 응답을 반환하기 전에 발생합니다.
모든 404를 홈페이지로 redirect해야 하나요?
아니요. 요청한 콘텐츠에 실제로 관련성 높은 대체 위치가 있을 때만 redirect하세요. 관련 없는 URL이나 영구적으로 존재하지 않는 URL을 적절한 404로 유지하면 사용자와 crawler에 더 명확한 결과를 제공할 수 있습니다.
rewrite 규칙 때문에 유효한 URL이 404를 반환할 수 있나요?
예. 웹 서버 rewrite, CMS permalink 설정, document root 구성 또는 애플리케이션 routing이 잘못되면 유효한 경로가 의도한 handler에 도달하지 못할 수 있습니다.
host가 정상적으로 작동하는데 API endpoint가 404를 반환하는 이유는 무엇인가요?
Endpoint 경로, HTTP method, API 버전 또는 prefix가 잘못되었거나, route가 배포되지 않았거나, reverse proxy가 해당 endpoint를 제공하지 않는 backend로 요청을 전달하고 있을 수 있습니다.
사용자 지정 Not Found 페이지가 HTTP 200을 반환해도 되나요?
아니요. 페이지는 유용한 사용자 지정 디자인을 사용할 수 있지만, 존재하지 않는 리소스는 일반적으로 HTTP 상태 404를 유지해야 합니다.
추가 문서
- MDN Web Docs — HTTP 404 Not Found: 404 상태 코드의 의미와 semantics에 대한 참고 자료입니다.
- RFC 9110 — HTTP Semantics: 공식 HTTP semantics 및 상태 코드 정의입니다.
구현 세부 사항은 해당 사이트에서 사용하는 웹 서버, reverse proxy, CMS 또는 애플리케이션 framework의 문서를 참조하세요. 특히 routing, rewrite, redirect 및 사용자 지정 오류 응답 관련 안내를 확인해야 합니다.