Lỗi 404 là gì? 404 và 403 Forbidden khác nhau, cách khắc phục
Lỗi 404, hay 404 Not Found, là mã trạng thái HTTP mà máy chủ web trả về khi không có gì để hiển thị tại URL được yêu cầu. Theo tiêu chuẩn HTTP RFC 9110 (tạm dịch), máy chủ "không tìm thấy biểu diễn hiện hành nào của tài nguyên đích" hoặc không muốn tiết lộ rằng tài nguyên đó tồn tại. Mã này không cho biết trang đã mất vĩnh viễn hay chưa.
Dùng thử miễn phí: Mã trạng thái HTTP Miễn phí, không cần tài khoản.
Người họ hàng gần của nó là 403 Forbidden (bị cấm) thì khác: trang có thể vẫn tồn tại, nhưng máy chủ đã hiểu yêu cầu và từ chối thực hiện. Bài hướng dẫn này giải thích lỗi 404 là gì, lỗi 403 Forbidden nghĩa là gì, hai lỗi này khác 401 và 410 ra sao, cũng như cách tìm và khắc phục chúng mà không ảnh hưởng đến SEO. Để tra cứu bất kỳ mã nào khác, hãy tìm trong danh sách Mã trạng thái HTTP miễn phí.
Lỗi 404 là gì? Ý nghĩa chính thức
Ý nghĩa của lỗi 404 bắt nguồn từ RFC 9110, mục 15.5.5, bản đặc tả HTTP hiện hành. Trên thực tế, có ba chi tiết quan trọng:
- Theo định nghĩa, 404 không mang nghĩa vĩnh viễn. Trang có thể xuất hiện trở lại. Khi máy chủ biết việc gỡ bỏ là vĩnh viễn, RFC ưu tiên dùng 410 Gone.
- 404 có thể được dùng để cố ý che giấu một trang. Máy chủ không muốn để lộ rằng một tài nguyên bị cấm truy cập có tồn tại có thể trả về 404 thay vì 403. Ví dụ, GitHub trả về 404 Not Found cho các kho lưu trữ riêng tư khi yêu cầu không được xác thực đúng cách, để người ngoài không thể xác nhận kho đó có tồn tại.
- Nhóm 4xx có nghĩa là "lỗi phía máy khách (client)", nhưng trên thực tế nguyên nhân thường nằm ở website: một trang đã bị xóa hoặc một liên kết hỏng.
Mỗi website diễn đạt thông báo theo cách riêng ("404 Not Found", "Page not found", "HTTP Error 404"), nhưng mã trạng thái bên dưới vẫn là một.
403 Forbidden nghĩa là gì?
RFC 9110 định nghĩa 403 Forbidden như sau (tạm dịch): máy chủ "đã hiểu yêu cầu nhưng từ chối thực hiện". Nếu yêu cầu có kèm thông tin xác thực, máy chủ coi chúng là không đủ, và gửi lại đúng yêu cầu đó cũng không giúp được gì. Trang vẫn ở đó; chỉ là bạn không được phép xem.
Lỗi 403 Forbidden thường bị nhầm với 401:
- 401 Unauthorized (chưa xác thực) nghĩa là yêu cầu thiếu thông tin xác thực hợp lệ. Máy chủ phải kèm theo header
WWW-Authenticatecho biết cách xác thực, và đăng nhập bằng đúng tài khoản có thể khắc phục lỗi. - 403 Forbidden nghĩa là máy chủ từ chối quyền truy cập. Đăng nhập lại bằng cùng tài khoản sẽ không giúp được gì; bạn cần quyền khác, hoặc chủ website phải thay đổi một quy tắc.
Trình duyệt thường hiển thị "403 Forbidden", "Access denied" hoặc "HTTP Error 403", và lời từ chối có thể đến từ tường lửa hoặc CDN đứng trước website chứ không phải từ chính website.
So sánh nhanh 404, 410, 403 và 401
| Mã | Tên | Ý nghĩa đối với máy khách | Nguyên nhân thường gặp | Cách khắc phục |
|---|---|---|---|---|
| 404 | Not Found | Không có gì tại URL này, có thể chỉ là tạm thời | Trang đã bị xóa hoặc di chuyển, liên kết hỏng, lỗi đánh máy | Sửa liên kết, khôi phục trang hoặc thêm chuyển hướng 301 |
| 410 | Gone | Tài nguyên đã bị cố ý gỡ bỏ và sẽ không quay lại | Chương trình khuyến mãi đã hết hạn, nội dung đã bị xóa | Không cần làm gì; gỡ các liên kết vẫn trỏ đến nó |
| 403 | Forbidden | Máy chủ đã hiểu yêu cầu và từ chối nó | Phân quyền, quy tắc chặn, tường lửa, chặn theo IP hoặc quốc gia | Cần quyền khác, hoặc thay đổi trên máy chủ |
| 401 | Unauthorized | Thiếu thông tin xác thực hợp lệ | Chưa đăng nhập, token hết hạn, sai mật khẩu | Đăng nhập hoặc gửi thông tin xác thực hợp lệ |
Các tên gọi này khớp với bảng tra cứu Mã trạng thái HTTP, nơi cũng có các mã chuyển hướng 3xx.
Cần làm gì khi gặp lỗi 404 hoặc 403
Nếu bạn là khách truy cập, hãy thử lần lượt các bước sau:
- Kiểm tra URL xem có lỗi đánh máy hoặc phần cuối của một liên kết dài bị cắt mất không. Đường dẫn có thể phân biệt chữ hoa chữ thường:
/Contact/và/contact/có thể là hai trang khác nhau. - Tải lại trang. Một trang đang được đăng lại có thể trả về lỗi trong chốc lát.
- Tìm kiếm trên website. Xóa phần cuối của đường dẫn hoặc dùng ô tìm kiếm của website để tìm nơi nội dung đã được chuyển đến.
- Với lỗi 403, hãy xóa cookie và bộ nhớ đệm của website. Cookie phiên đã hết hạn có thể khiến máy chủ từ chối yêu cầu; đăng xuất rồi đăng nhập lại cũng có tác dụng vì cùng lý do đó.
- Tắt VPN hoặc proxy. Một số website và tường lửa chặn các dải địa chỉ VPN hoặc cả một quốc gia bằng lỗi 403.
- Báo cho chủ website nếu liên kết hỏng nằm ngay trên website đó.
Vì sao website trả về 404 Not Found
Với chủ website, phần lớn lỗi 404 xuất phát từ một trong các nguyên nhân sau:
- Trang bị xóa hoặc di chuyển mà không có chuyển hướng, thường xảy ra sau khi thiết kế lại website hoặc chuyển đổi CMS.
- Lỗi đánh máy trong liên kết, trên chính các trang của bạn hoặc trên website khác.
- Phân biệt chữ hoa chữ thường. Trên các máy chủ Linux thông thường,
/Guide.htmlvà/guide.htmllà hai tệp khác nhau. - Dấu gạch chéo ở cuối.
/pricingvà/pricing/là hai URL khác nhau, và máy chủ có thể phục vụ một URL nhưng trả về 404 cho URL còn lại. - Quy tắc rewrite. Một quy tắc
.htaccessbị lỗi, thiết lập permalink bị thay đổi hoặc thiếu dòngtry_filescủa Nginx có thể khiến các URL hợp lệ rơi vào 404.
Nguyên nhân gây lỗi 403 Forbidden trên website của bạn
Trên website của chính bạn, lỗi 403 Forbidden thường đến từ:
- Quyền truy cập tệp. Máy chủ web phải đọc được các tệp. Trên hosting Linux thông thường, tệp dùng quyền
644(rw-r--r--: chủ sở hữu được đọc và ghi, mọi người khác chỉ được đọc) và thư mục dùng755(rwxr-xr-x). Tránh dùng777, vì quyền này cho phép bất kỳ ai cũng ghi được. - Không có tệp index trong khi tính năng liệt kê thư mục bị tắt. Yêu cầu tới một thư mục không có
index.htmlhoặcindex.phpsẽ nhận lỗi 403 khi Apache đặtOptions -Indexeshoặc Nginx đặtautoindex off. - Quy tắc chặn trong
.htaccesshoặc cấu hình máy chủ, chẳng hạnRequire all deniedhoặc một danh sách IP được phép không bao gồm khách truy cập. - Tường lửa ứng dụng web hoặc CDN chặn địa chỉ IP, quốc gia, user agent hoặc các mẫu yêu cầu đáng ngờ.
- Chống hotlink, tính năng trả về 403 cho hình ảnh được yêu cầu từ tên miền khác.
Cách khắc phục lỗi 404
Cách xử lý đúng tùy thuộc vào điều đã xảy ra với trang:
- Nội dung đã được chuyển đi: thêm chuyển hướng 301 tới URL mới để khách truy cập, liên kết và công cụ tìm kiếm đi theo.
- Trang bị xóa nhầm: khôi phục trang tại đúng URL cũ.
- Liên kết của chính bạn bị sai: sửa menu, liên kết nội bộ và các mục trong sitemap đang trỏ đến URL bị thiếu.
- Trang bị gỡ có chủ đích: trả về 410 Gone (hoặc giữ nguyên 404) và không chuyển hướng.
Trên Apache, cả ba đều có thể đặt trong .htaccess:
Redirect 301 /old-guide/ /new-guide/
Redirect gone /spring-sale-2025/
ErrorDocument 404 /404.html
Cấu hình tương đương cho Nginx là:
location = /old-guide/ { return 301 /new-guide/; }
location = /spring-sale-2025/ { return 410; }
error_page 404 /404.html;
Trang 404 tùy chỉnh nên cho biết trang không được tìm thấy, giữ nguyên thanh điều hướng của website và gợi ý ô tìm kiếm hoặc các liên kết phổ biến, đồng thời vẫn phải gửi mã trạng thái 404. Trên Apache, hãy trỏ ErrorDocument tới một đường dẫn cục bộ như /404.html: nếu dùng URL đầy đủ bắt đầu bằng https://, Apache sẽ chuyển hướng khách truy cập và trạng thái 404 ban đầu bị mất.
Tránh soft 404 (404 mềm): những trang báo "không tìm thấy" nhưng lại trả về 200 OK. Các ứng dụng trang đơn trả lời mọi route bằng 200 là nguồn gây lỗi phổ biến. Ngoài ra, đừng chuyển hướng mọi URL bị thiếu về trang chủ. Hướng dẫn chuyển website của Google cảnh báo rằng việc đưa nhiều URL cũ về một đích không liên quan, chẳng hạn trang chủ, có thể gây nhầm lẫn cho người dùng và có thể bị coi là soft 404.
Lỗi 404 có ảnh hưởng đến SEO không?
Bản thân chúng thì không. Google Search Central từng cho biết việc một website có một số URL 404 tự nó không gây hại và không bị tính là điểm trừ trong kết quả tìm kiếm. Trang trợ giúp của Search Console bổ sung rằng lỗi 404 không nhất thiết là vấn đề khi một trang bị gỡ mà không có trang thay thế, và khuyên bạn sửa những lỗi 404 mà chính bạn liên kết tới hoặc liệt kê trong sitemap.
Có hai trường hợp thực sự gây thiệt hại. Một trang từng có thứ hạng mà nay trả về 404 sẽ rơi khỏi chỉ mục cùng với lưu lượng truy cập của nó, vì vậy hãy chuyển hướng nếu có trang thay thế phù hợp. Còn soft 404 thì che giấu trạng thái thật, nên hướng dẫn về lỗi soft 404 của Google khuyên dùng 404 hoặc 410 thật cho trang đã bị gỡ và 301 cho trang đã chuyển đi.
Về 404 và 410: tài liệu của Google cho biết họ xử lý mọi mã 4xx, trừ 429, theo cùng một cách và xóa URL đã được lập chỉ mục trước đó khỏi chỉ mục. Hãy dùng 410 vì nó thể hiện rõ ý định của bạn, chứ không phải để thay đổi thứ hạng. Lỗi 403 hoặc 401 trên một trang bạn muốn được lập chỉ mục còn tệ hơn: Googlebot không đăng nhập, nên Search Console báo lý do "Bị chặn do quyền truy cập bị cấm (403)" hoặc "Bị chặn do yêu cầu trái phép (401)" và trang không được lập chỉ mục. Nếu tường lửa chặn Googlebot, hãy sửa quy tắc đó.
Cách tìm liên kết hỏng và lỗi 404
- Google Search Console: mở Lập chỉ mục › Trang và xem các lý do "Không tìm thấy (404)" và "Soft 404", nơi liệt kê các URL bị ảnh hưởng.
- Nhật ký máy chủ (server log): ghi lại mọi yêu cầu kèm trạng thái của nó. Trong định dạng log "combined" phổ biến của Apache và Nginx, trường thứ 7 là đường dẫn và trường thứ 9 là mã trạng thái, nên lệnh sau liệt kê các URL bị thiếu được yêu cầu nhiều nhất:
awk '$9 == 404 {print $7}' access.log | sort | uniq -c | sort -rn | head
Trên một log mẫu gồm bảy yêu cầu, lệnh này in ra 3 /old-guide/ và 1 /Contact/: một trang đã chuyển đi cần chuyển hướng và một liên kết viết hoa sai chữ cái.
- Công cụ kiểm tra liên kết: trình thu thập dữ liệu website đi theo mọi liên kết nội bộ và báo những liên kết trả về 4xx hoặc 5xx; nhiều công cụ còn kiểm tra được cả liên kết ra ngoài.
- Kiểm tra thủ công nhanh:
curl -I https://example.com/old-guide/chỉ lấy phần header, và dòng đầu tiên cho biết trạng thái, chẳng hạnHTTP/2 404. Trình tạo lệnh cURL sẽ tạo lệnh này khi bạn chọn phương thức HEAD.
Tra cứu mọi mã trạng thái
Bảng tra cứu Mã trạng thái HTTP miễn phí liệt kê 63 mã chuẩn, từ 100 Continue đến 511 Network Authentication Required, chia thành năm nhóm. Gõ một con số như 404 hoặc một từ như forbidden để xem mã tương ứng, tên của nó và mô tả ngắn bằng ngôn ngữ của trang. Đây là công cụ tra cứu, không phải công cụ kiểm tra URL: nó không truy cập các trang của bạn, và các mã không chính thức như 499 của Nginx không có trong danh sách.
Câu hỏi thường gặp
Lỗi 404 có phải do tôi không?
Thường là không. Có thể bạn đã gõ sai URL, nhưng phần lớn lỗi 404 đến từ những trang đã bị chuyển đi hoặc bị xóa và những liên kết chưa từng được cập nhật.
Nên dùng 404 hay 410 cho trang đã xóa?
Nếu trang bị gỡ có chủ đích và sẽ không quay lại, 410 Gone là câu trả lời chính xác nhất; nếu không chắc chắn, dùng 404 cũng được. Nếu nội dung đã được chuyển đi, hãy dùng chuyển hướng 301.
Xóa cookie có khắc phục được lỗi 403 Forbidden không?
Đôi khi có. Nếu nguyên nhân là cookie phiên đã hết hạn hoặc bị hỏng, việc xóa cookie của website rồi đăng nhập lại sẽ khắc phục được lỗi. Cách này không có tác dụng khi lệnh chặn đến từ phân quyền trên máy chủ, quy tắc theo IP hoặc quốc gia, hoặc việc chặn VPN.
Soft 404 là gì?
Đó là trang thông báo cho khách truy cập rằng nội dung không tồn tại nhưng lại trả về 200 OK thay vì 404. Google loại những trang như vậy khỏi kết quả tìm kiếm và đánh dấu chúng trong Search Console. Hãy trả về 404 hoặc 410 thật, hoặc 301 nếu nội dung đã được chuyển đi.
Lỗi 404 là lỗi phía máy khách hay lỗi máy chủ?
Nó thuộc nhóm lỗi phía máy khách 4xx, vì URL được yêu cầu không có gì để phục vụ. Sự cố máy chủ sẽ hiển thị dưới dạng mã 5xx, chẳng hạn 500 Internal Server Error.
Dùng thử miễn phí: Mã trạng thái HTTP Miễn phí, không cần tài khoản.