HTTP 404

Lỗi HTTP 404, 404 Not Found, 404, 404 Error, Page Not Found hay File Not Found là một mã phản hồi chuẩn của HTTP chỉ ra rằng trình duyệt web có thể kết nối với một máy chủ, nhưng máy chủ không tìm thấy thông tin/trang web yêu cầu. Hơn nữa, khi thông tin được yêu cầu được tìm thấy nhưng quyền truy cập không được cấp, máy chủ có thể trả về lỗi 404 nếu muốn không tiết lộ thông tin này.
Trang web cúa máy chủ sẽ thường tạo ra một trang web báo lỗi "404 Not Found (404 không tìm thấy)" khi người dùng cố gắng truy cập link chết hoặc hỏng. Lỗi 404, cùng với lỗi 403 là hai lỗi hay gặp nhất khi duyệt. .
Tổng quan.
Khi kết nối qua HTTP, một máy chủ sẽ trả lại kết quả, ví dụ một trình duyệt yêu cầu truy cập một trang web, với một mã số trả lời và một tùy chọn dựa vào mã cụ thể. Trong lỗi 404, chữ số đầu tiên (4) chỉ ra một lỗi từ trình duyệt hay người duyệt web, ví dụ như gõ sai URL (địa chỉ). Hai con số sau cho thấy những lỗi cụ thể xảy ra. Việc sử dụng 3 chữ số của HTTP là tương tự với việc dùng những mã trong các giao thức bảo mật trước đó như FTP và NNTP. Ở cấp độ HTTP, mã phản hồi 404 được theo sau bởi "cụm từ lý do" có thể đọc được. HTTP gợi ý cụm từ "Not Found" và nhiều máy chủ web theo mặc định phát hành một trang HTML bao gồm cả mã 404 và cụm từ "Not Found".
Một lỗi 404 thường được trả lại khi các trang đã được di chuyển hoặc xóa. Trong trường hợp đầu tiên, tốt hơn là sử dụng ánh xạ URL hoặc chuyển hướng URL bằng cách trả về phản hồi 301 Moved Permanently, có thể được cấu hình trong hầu hết các tệp cấu hình máy chủ hoặc thông qua viết lại URL; trong trường hợp thứ hai, phải trả lại 410 Gone. Vì hai tùy chọn này yêu cầu cấu hình máy chủ đặc biệt, hầu hết các trang web không sử dụng chúng.
Ngoài ra, lỗi 404 không phải là lỗi DNS, xuất hiện khi URL đã cho chỉ tên máy chủ không tồn tại. Một lỗi 404 chỉ ra rằng máy chủ chính đã được tìm thấy, nhưng máy chủ không thể truy xuất trang được yêu cầu.
Tự chọn lỗi trang.
Hầu hết HTTP server cho phép thay đổi trang lỗi 404 hay chuyển hướng tới trang khác. Hầu hết những trang web lớn thay thế thông báo 404 mặc định bằng thông báo 404 "lịch sự" và đẹp hơn, cung cấp nhiều thông tin hơn.
Lỗi mềm 404.
Một số trang web báo cáo lỗi "không tìm thấy" bằng cách trả lại trang web chuẩn có mã phản hồi "200 OK", báo cáo sai rằng trang được tải đúng cách; cái này được gọi là "404 mềm". Thuật ngữ "mềm 404" được giới thiệu vào năm 2004 bởi Ziv Bar-Yossef "et al".
404 mềm là vấn đề đối với các phương pháp tự động phát hiện xem một liên kết có bị hỏng hay không. Một số công cụ tìm kiếm, như Yahoo và Google, sử dụng các quy trình tự động để phát hiện 404 mềm.  404 mềm có thể xảy ra do lỗi cấu hình khi sử dụng một số phần mềm máy chủ HTTP, ví dụ như với phần mềm Apache, khi Tài liệu lỗi 404 (được chỉ định trong tệp.htaccess) là đường dẫn tuyệt đối (ví dụ: http://example.com/error.html) chứ không phải là đường dẫn tương đối (/error.html). Điều này cũng có thể được thực hiện nhằm mục đích buộc một số trình duyệt (như Internet Explorer) để hiển thị thông báo lỗi 404 tùy chỉnh thay vì thay thế thông báo lỗi được cung cấp bằng thông báo lỗi "thân thiện" dành riêng cho trình duyệt (trong Internet Explorer, hành vi này được kích hoạt khi 404 được cung cấp và HTML nhận được ngắn hơn một độ dài nhất định và người dùng có thể vô hiệu hóa bằng tay).
Ngoài ra còn có lỗi "mềm 3XX" trong đó nội dung được trả về với trạng thái 200 nhưng nó xuất phát từ một trang được chuyển hướng, chẳng hạn như khi các trang bị thiếu được chuyển hướng đến trang gốc / trang chủ.
Máy chủ proxy.
Một số máy chủ proxy tạo ra lỗi 404 khi mã lỗi 500 phạm vi sẽ chính xác hơn. Nếu máy chủ proxy không thể đáp ứng yêu cầu cho một trang 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 từ chối kết nối TCP), thì điều này sẽ được mô tả là Lỗi máy chủ nội bộ 5xx, nhưng thay vào đó có thể cung cấp 404. Điều này có thể gây nhầm lẫn cho các chương trình mong đợi và hành động theo các phản hồi cụ thể, vì chúng không còn có thể dễ dàng phân biệt giữa máy chủ web vắng mặt và trang web bị thiếu trên máy chủ web có mặt.
404 cố ý.
Vào tháng 7 năm 2004, nhà cung cấp dịch vụ viễn thông BT Group của Anh đã triển khai hệ thống chặn nội dung Cleanfeed, trả về lỗi 404 cho bất kỳ yêu cầu nào về nội dung được xác định là có thể bất hợp pháp bởi Internet Watch Foundation.  Các ISP khác trả về lỗi "cấm" HTTP 403 trong cùng trường hợp. Việc sử dụng các lỗi 404 giả làm phương tiện để che giấu kiểm duyệt cũng đã được báo cáo ở Thái Lan và Tunisia. Tại Tunisia, nơi kiểm duyệt nghiêm trọng trước cuộc cách mạng năm 2011, mọi người nhận thức được bản chất của các lỗi 404 giả và tạo ra một nhân vật tưởng tượng có tên "Ammar 404", đại diện cho "người kiểm duyệt vô hình".
Microsoft Internet Server 404 mã lỗi thay thế.
Phần mềm máy chủ web được phát triển bởi Microsoft, Dịch vụ thông tin Internet (IIS) của Microsoft, trả về một bộ mã thay thế với các phản hồi 404 của nó. Các mã thế hệ có dạng số thập phân được gắn vào mã trạng thái 404. Các mã thế hệ không được IANA công nhận chính thức và không được trả về bởi các máy chủ không phải của Microsoft.
Mã Substatus.
Các máy chủ IIS 7.0, IIS 7.5 và IIS 8.0 của Microsoft xác định các mã thay thế HTTP sau để chỉ ra nguyên nhân cụ thể hơn của lỗi 404:
Theo dõi lỗi 404.
Một số công cụ tồn tại thu thập dữ liệu thông qua một trang web để tìm 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 kiếm các liên kết tồn tại trong một trang web cụ thể. Hạn chế của các công cụ này là chúng chỉ tìm thấy các liên kết trong một trang web cụ thể và bỏ qua 404 do các liên kết trên các trang web khác. Kết quả là, các công cụ này bỏ lỡ 83% trong số 404 trên các trang web.  Một cách để giải quyết vấn đề này là tìm lỗi 404 bằng cách phân tích các liên kết bên ngoài.
Một phương pháp phổ biến khác là theo dõi lưu lượng truy cập đến các trang 404 bằng cách sử dụng phân tích tệp nhật ký.  Điều này có thể hữu ích để hiểu thêm về những gì người dùng 404 đạt được trên trang web. Một phương pháp khác để theo dõi lưu lượng truy cập đến các trang 404 là sử dụng các công cụ theo dõi lưu lượng truy cập dựa trên JavaScript.