Mã lỗi HTTP 404, còn được gọi là 404 Not Found hoặc đơn giản là 404, chỉ ra rằng máy chủ không thể tìm thấy thông tin hoặc trang web mà trình duyệt yêu cầu. Lỗi này cũng có thể xuất hiện khi máy chủ từ chối cấp quyền truy cập vào thông tin, mà không muốn tiết lộ thêm chi tiết.
Khi truy cập vào một liên kết hỏng hoặc không tồn tại, trang web của máy chủ thường hiển thị thông báo lỗi '404 Not Found'. Lỗi 404, cùng với lỗi 403, là hai lỗi phổ biến nhất gặp phải khi duyệt web.
Tổng quan
Khi kết nối qua HTTP, máy chủ phản hồi với một mã trạng thái, ví dụ như mã lỗi 404 khi trang web không tìm thấy. Số đầu tiên (4) biểu thị lỗi từ phía trình duyệt hoặc người dùng, chẳng hạn như gõ sai địa chỉ URL. Hai số tiếp theo chỉ ra loại lỗi cụ thể. Mã lỗi 404 trong HTTP thường kèm theo cụm từ 'Not Found' để giải thích nguyên nhân lỗi, và nhiều máy chủ web hiển thị một trang HTML với mã 404 cùng cụm từ này.
Lỗi 404 thường xuất hiện khi các trang đã bị di chuyển hoặc bị xóa. Để xử lý trường hợp di chuyển trang, nên sử dụng phản hồi 301 Moved Permanently để chuyển hướng URL, có thể được cấu hình qua tệp cấu hình máy chủ hoặc qua viết lại URL. Còn khi trang bị xóa, cần trả về lỗi 410 Gone. Tuy nhiên, do yêu cầu cấu hình đặc biệt, nhiều trang web không áp dụng các tùy chọn này.
Lỗi 404 không phải là lỗi DNS, mà xảy ra khi URL chỉ đến tên máy chủ không tồn tại. Lỗi 404 chỉ ra rằng máy chủ chính đã được xác định nhưng không thể truy cập trang web yêu cầu.
Chỉnh sửa trang lỗi
Nhiều máy chủ HTTP cho phép tùy chỉnh trang lỗi 404 hoặc chuyển hướng đến trang khác. Các trang web lớn thường thay thế thông báo lỗi 404 mặc định bằng các thông báo đẹp mắt và hữu ích hơn, cung cấp thông tin chi tiết hơn cho người dùng.
Lỗi 404 mềm
Một số trang web có thể trả về trang web với mã phản hồi '200 OK' thay vì '404 Not Found' khi không tìm thấy trang, điều này được gọi là lỗi 404 mềm
Lỗi 404 mềm gây khó khăn cho việc tự động phát hiện các liên kết hỏng. Các công cụ tìm kiếm như Yahoo và Google sử dụng các phương pháp tự động để nhận diện lỗi này. Lỗi 404 mềm có thể phát sinh do lỗi cấu hình phần mềm máy chủ HTTP, chẳng hạn như Apache, khi chỉ định đường dẫn tuyệt đối (ví dụ: http://example.com/error.html) thay vì đường dẫn tương đối (/error.html). Đôi khi lỗi này được tạo ra để buộc trình duyệt, như Internet Explorer, hiển thị thông báo lỗi 404 tùy chỉnh thay vì thông báo lỗi mặc định của trình duyệt, điều này có thể bị vô hiệu hóa bởi người dùng.
Ngoài lỗi 404 mềm, còn tồn tại lỗi 'mềm 3XX' khi nội dung được trả về với mã trạng thái 200 nhưng thực chất là từ một trang bị chuyển hướng, như khi trang bị thiếu được chuyển hướng đến trang chính hoặc trang chủ.
Máy chủ proxy
Một số máy chủ proxy có thể báo lỗi 404 trong khi mã lỗi 500 sẽ chính xác hơn. Nếu máy chủ proxy không thể xử lý yêu cầu do sự cố với máy chủ từ xa, chẳng hạn như lỗi phân giải tên máy chủ hoặc kết nối TCP bị từ chối, thay vì trả về lỗi 5xx, máy chủ proxy có thể cung cấp lỗi 404. Điều này có thể gây khó khăn cho các chương trình mong đợi phản hồi cụ thể, vì chúng không thể phân biệt rõ ràng giữa việc máy chủ web không tồn tại và trang web bị thiếu trên máy chủ web hiện có.
Lỗi 404 cố ý
Vào tháng 7 năm 2004, BT Group của Anh đã triển khai hệ thống chặn nội dung Cleanfeed, trả về lỗi 404 cho các yêu cầu về nội dung được cho là bất hợp pháp bởi Internet Watch Foundation. Một số ISP khác có thể trả về lỗi HTTP 403 trong những trường hợp tương tự. Việc sử dụng lỗi 404 giả để che giấu kiểm duyệt cũng đã được báo cáo ở Thái Lan và Tunisia. Tại Tunisia, trước cuộc cách mạng năm 2011, người dân đã tạo ra nhân vật 'Ammar 404' để đại diện cho 'người kiểm duyệt vô hình' nhằm phản ánh bản chất của các lỗi 404 giả.
Thay thế mã lỗi 404 của Microsoft Internet Server
Phần mềm máy chủ web của Microsoft, Dịch vụ Thông tin Internet (IIS), sử dụng một bộ mã lỗi thay thế cho các phản hồi 404. Những mã này được gắn thêm vào mã trạng thái 404 dưới dạng số thập phân. Các mã này không được IANA công nhận và chỉ xuất hiện trên các máy chủ do Microsoft phát triển.
Mã Substatus
Các phiên bản máy chủ IIS 7.0, 7.5 và 8.0 của Microsoft sử dụng các mã phụ HTTP sau để chỉ rõ nguyên nhân cụ thể của lỗi 404:
- 404.0 - Không tìm thấy.
- 404.1 - Trang web không tồn tại.
- 404.2 - Giới hạn ISAPI hoặc CGI.
- 404.3 - Giới hạn loại MIME.
- 404.4 - Thiếu cấu hình xử lý.
- 404.5 - Bị từ chối bởi cấu hình lọc yêu cầu.
- 404.6 - Động từ bị từ chối.
- 404.7 - Phần mở rộng tệp bị từ chối.
- 404.8 - Không gian tên ẩn.
- 404.9 - Thuộc tính tệp bị ẩn.
- 404.10 - Tiêu đề yêu cầu quá dài.
- 404.11 - Yêu cầu chứa chuỗi thoát kép.
- 404.12 - Yêu cầu chứa ký tự bit cao.
- 404.13 - Độ dài nội dung quá lớn.
- 404.14 - URL yêu cầu quá dài.
- 404.15 - Chuỗi truy vấn quá dài.
- 404.16 - Yêu cầu DAV gửi đến trình xử lý tệp tĩnh.
- 404.17 - Nội dung động ánh xạ đến trình xử lý tệp tĩnh qua ánh xạ MIME ký tự đại diện.
- 404.18 - Chuỗi truy vấn bị từ chối.
- 404.19 - Bị từ chối bởi quy tắc lọc.
- 404.20 - Quá nhiều phân đoạn URL.
Theo dõi lỗi 404
Một số công cụ được thiết kế để thu thập dữ liệu trên một trang web nhằm phát hiện các trang trả về mã trạng thái 404. Những công cụ này có thể hữu ích trong việc tìm các liên kết hỏng trên một trang web cụ thể. Tuy nhiên, chúng thường bỏ qua các lỗi 404 do liên kết từ các trang web khác, dẫn đến việc chỉ phát hiện khoảng 17% số lỗi 404 thực tế trên toàn bộ trang web. Một phương pháp để cải thiện là phân tích các liên kết từ bên ngoài để tìm lỗi 404.
Một phương pháp phổ biến khác là theo dõi lượng truy cập vào các trang lỗi 404 thông qua phân tích nhật ký. Cách này giúp bạn hiểu rõ hơn về hành động của người dùng khi họ gặp lỗi 404 trên trang web. Thêm vào đó, có thể sử dụng công cụ theo dõi lưu lượng dựa trên JavaScript để giám sát sự truy cập vào các trang lỗi 404.