HTTP 404 (Not Found) [백과사전 정보]
개요
HTTP 404는 Hypertext Transfer Protocol (HTTP)에서 정의된 상태 코드 중 하나로, 클라이언트가 요청한 리소스(웹 페이지, 이미지, 파일 등)가 서버에 존재하지 않을 때 서버가 반환한다. 공식 명칭은 *“404 Not Found”*이며, 4xx 클래스(클라이언트 오류) 중 하나이다.
발생 원인
| 구분 | 상세 설명 |
|---|---|
| 잘못된 URL | 사용자가 주소창에 오타를 입력하거나, 링크가 잘못 작성된 경우. |
| 삭제된 리소스 | 해당 페이지·파일이 서버에서 삭제되었으나, 외부 링크는 그대로 남아 있는 경우. |
| 이동된 리소스 | 리소스가 다른 경로로 이동했지만, 301·302와 같은 영구/임시 리다이렉션이 설정되지 않은 경우. |
| 서버 설정 오류 | .htaccess·nginx 설정 오류 등으로 인해 정상 경로가 차단되었을 때. |
| 디지털 권한 제한 | 인증·권한이 필요하지만, 인증이 없거나 충분하지 않아 접근이 차단된 경우(일부 구현에서는 403 대신 404를 반환하기도 함). |
HTTP 404의 기술적 의미
- 클래스: 4xx (Client Error) – 클라이언트가 요청을 잘못 구성했음을 의미한다.
- RFC: RFC 7231 §6.5.4 에서 정의되며, “The origin server did not find a current representation for the target resource or is not willing to disclose that it exists.” 라고 명시한다.
- 응답 헤더 예시
HTTP/1.1 404 Not Found Date: Sat, 26 Feb 2026 12:34:56 GMT Content-Type: text/html; charset=UTF-8 Content-Length: 345
사용자 경험(UX) 관점에서의 처리
-
친절한 오류 페이지
- 직관적인 메시지와 검색·홈버튼 제공.
- 사이트 맵·최근 게시물·추천 콘텐츠 등을 포함해 이탈률을 감소시킨다.
-
자동 리다이렉션
- 오래된 URL을 새 URL로 301 영구 리다이렉션하거나, 302 임시 리다이렉션을 활용해 검색 엔진 최적화(SEO)를 유지한다.
-
맞춤형 로깅·모니터링
- 404 로그를 수집·분석해 깨진 링크(‘dead link’)를 찾아 교정한다.
- Google Search Console, Bing Webmaster Tools 등에서 404 오류를 검토한다.
관련 HTTP 상태 코드
| 코드 | 명칭 | 의미 |
|---|---|---|
| 400 | Bad Request | 요청 문법이 잘못됨. |
| 401 | Unauthorized | 인증이 필요함. |
| 403 | Forbidden | 권한 없음(접근 금지). |
| 404 | Not Found | 리소스 없음(현재 설명). |
| 410 | Gone | 리소스가 영구적으로 삭제되어 앞으로도 존재하지 않음. |
| 451 | Unavailable For Legal Reasons | 법적 이유로 접근 제한. |
개발 시 구현 예시 (Python/Flask)
from flask import Flask, render_template, abort
app = Flask(__name__)
@app.route('/article/<int:id>')
def article(id):
article = get_article_from_db(id)
if article is None:
# 404 Not Found 반환
abort(404)
return render_template('article.html', article=article)
@app.errorhandler(404)
def page_not_found(e):
# 커스텀 404 페이지 렌더링
return render_template('404.html'), 404
보안상의 고려사항
- 정보 노출 최소화: 서버가 실제 파일 존재 여부를 공개하지 않도록, 404와 403을 구분해 적절히 사용한다.
- 디렉터리 트래버설 방지: 잘못된 경로 탐색 시 404를 반환해 파일 시스템 구조를 노출하지 않는다.
결론
HTTP 404는 “리소스를 찾을 수 없음”을 나타내는 가장 친숙한 웹 오류 코드이며, 단순히 오류를 알리는 수준을 넘어서 사용자 경험 개선, 검색 엔진 최적화, 보안 등 다양한 측면에서 적절히 관리·대응해야 하는 중요한 웹 표준이다.