Hướng dẫn về 200 OK

HTTP 200 OK có nghĩa là gì theo RFC 9110, vì sao mã này cần thiết nhưng chưa đủ để được lập chỉ mục, cạm bẫy soft 404, sự khác nhau giữa 200, 204 và 304, cùng cách xác minh phản hồi mà Googlebot thực sự nhận được.

Xuất bản lần đầu: 3 thg 7, 2026 · Cập nhật lần cuối: 22 thg 8, 2026 · Advanced
Ngôn ngữ
1 tín hiệu bằng chứng trên trang này

HTTP 200 OK là mã thành công tiêu chuẩn thuộc nhóm 2xx theo RFC 9110: máy chủ đã tìm thấy tài nguyên và đang trả tài nguyên đó về. Đây là mã phù hợp cho một trang web, nhưng chỉ là điều kiện cần chứ chưa đủ. Google có thể lập chỉ mục nội dung nhưng không bảo đảm; chất lượng, trùng lặp, nội dung mỏng và noindex vẫn được đánh giá sau phản hồi 200. Cạm bẫy điển hình là soft 404: URL trả về 200 nhưng nội dung giống trang lỗi hoặc trang trống. Hãy phân biệt 200 với 204 có thân rỗng và 304 là tín hiệu bộ nhớ đệm; trang đã mất nên dùng 404/410, còn trang đã chuyển nên dùng 301. Luôn xác minh phản hồi Googlebot thực sự nhận bằng URL Inspection hoặc nhật ký máy chủ.

Tóm tắt — 200 OK là mã thành công tiêu chuẩn thuộc nhóm 2xx (RFC 9110 §15.3.1): máy chủ đã hoàn thành yêu cầu và, với GET/HEAD, thân phản hồi biểu diễn tài nguyên. Theo mặc định, phản hồi có thể được lưu đệm theo suy đoán. Với SEO, mã này cần thiết nhưng chưa đủ: tài liệu của Google nói hệ thống “may index the content, but that’s not guaranteed,” (bản dịch) «có thể lập chỉ mục nội dung, nhưng điều đó không được bảo đảm»; chất lượng, trùng lặp, nội dung mỏng và noindex vẫn quyết định kết quả. Lỗi điển hình là soft 404: mã 200 bao quanh nội dung lỗi hoặc trống, khiến Google phát hiện ở tầng nội dung và báo soft 404 bất kể mã. Hãy phân biệt 200 (dự kiến có thân phản hồi), 204 (thân rỗng, bị xử lý như soft 404 trên trang) và 304 (tín hiệu bộ nhớ đệm, không phải quyết định lập chỉ mục). Đồng thời phải xác minh điều Googlebot nhận được, vì cloaking, chặn bot, quy tắc địa lý hoặc cấu hình CDN/WAF có thể trả mã khác với trình duyệt.

Ý nghĩa của 200 trong đặc tả

RFC 9110 (HTTP Semantics) là tài liệu có thẩm quyền hiện hành, và §15.3.1 nói rõ: “The 200 (OK) status code indicates that the request has succeeded.” (bản dịch) «Mã trạng thái này cho biết yêu cầu đã thành công.» Nội dung thân phản hồi phụ thuộc vào phương thức yêu cầu. Với GET và HEAD — hai phương thức quan trọng cho trang — nội dung biểu diễn tài nguyên đích. RFC cũng nêu ngoại lệ: ngoài phản hồi cho CONNECT, mã 200 được kỳ vọng có nội dung trừ khi khung thông điệp báo rõ độ dài bằng 0. Vì vậy, “200 luôn có thân phản hồi” chỉ là cách nói tắt, không phải quy tắc tuyệt đối. Trong thực tế, trang cần được lập chỉ mục phải có thân phản hồi thực. Theo mặc định, 200 còn “có thể lưu đệm theo suy đoán” trừ khi chỉ thị cache-control quy định khác; đó là lý do các header xác thực như ETagLast-Modified quan trọng với trang được crawl lại thường xuyên. Evidence for this claim RFC 9110 defines 200 OK as indicating that the request succeeded; the response content depends on the request method. Scope: HTTP semantics for 200 responses; this does not guarantee search indexing. Confidence: high · Verified: IETF: RFC 9110 §15.3.1 — 200 OK

Về kỹ thuật, mã 200 không chỉ dành cho trang. RFC mô tả ý nghĩa của “thành công” theo từng phương thức:

Phương thức yêu cầuThân phản hồi 200 biểu diễn
GETtài nguyên đích
HEADtài nguyên đích nhưng không truyền thân phản hồi
POSTtrạng thái hoặc kết quả của hành động
PUT, DELETEtrạng thái của hành động
OPTIONScác tùy chọn giao tiếp cho tài nguyên

Với phương thức khác GET, bạn thường không thấy mã 200. MDN lưu ý rằng yêu cầu PUT hoặc DELETE thành công “often do not result in a 200 OK response,” (bản dịch) «thường không tạo ra phản hồi 200 OK»; 201 Created hoặc 204 No Content phổ biến hơn. Điều này không liên quan trực tiếp đến SEO của URL trang. Điểm cần nhớ là tài liệu muốn được lập chỉ mục nên trả 200 cùng thân phản hồi thực.

Cần thiết nhưng chưa đủ để lập chỉ mục

Đây là điểm quan trọng nhất và cũng là chỗ nhiều trang thuật ngữ giải thích sai khi nói “200 nghĩa là trang được lập chỉ mục”. Tài liệu của Google nói: “passes on whatever it received to the next processing step… For Google Search, the next system is the indexing pipeline. The indexing systems may index the content, but that’s not guaranteed.” (bản dịch) «Google chuyển mọi thứ đã nhận sang bước xử lý tiếp theo; với Google Search, đó là quy trình lập chỉ mục. Hệ thống có thể lập chỉ mục nội dung, nhưng điều đó không được bảo đảm.» Evidence for this claim Google passes a 2xx response to its indexing pipeline, which may index the content but does not guarantee that it will do so; error-like content can be classified as a soft 404. Scope: Google Search handling of 2xx page responses and soft 404s. Confidence: high · Verified: Google: HTTP status codes and Search

Vì vậy, mã 200 là cam kết về phản hồi HTTP, không phải lời hứa về số phận của trang trong Search. Sau mã 200, Google đánh giá độc lập:

  • Chất lượng — trang mỏng, ít giá trị hoặc được tạo tự động có thể không được lập chỉ mục.
  • Trùng lặp — trang gần trùng với URL mạnh hơn có thể được hợp nhất vào URL đó thay vì tự được lập chỉ mục; thẻ canonical giúp kiểm soát việc này.
  • Chỉ thịnoindex trong thẻ meta hoặc header X-Robots-Tag loại trang khỏi chỉ mục ngay cả khi phản hồi 200 hoàn hảo.

Hướng dẫn của Patrick trên Ahrefs cũng phân biệt ở cấp nhóm mã: “Most 2xxs will allow pages to be indexed. However, 204s will be treated as soft 404s and won’t be indexed.” (bản dịch) «Hầu hết phản hồi thành công cho phép trang được lập chỉ mục; phản hồi không có nội dung sẽ bị xử lý như trang lỗi mềm và không được lập chỉ mục.» Mã 200 chỉ giúp trang đủ điều kiện, không biến trang thành đã lập chỉ mục.

Cạm bẫy soft 404

Ví dụ rõ nhất cho việc “200 chưa nói lên toàn bộ câu chuyện” là soft 404. Tài liệu về mã trạng thái của Google mô tả cơ chế: “If the content suggests an error for Google Search, an empty page or an error message, Search Console will show a soft 404 error.” (bản dịch) «Nếu nội dung gợi ra lỗi đối với Google Search, chẳng hạn trang trống hoặc thông báo lỗi, Search Console sẽ hiển thị lỗi mềm.» Điều này cho thấy việc phân loại dựa trên nội dung được kết xuất, không chỉ mã HTTP. Quy trình lập chỉ mục nhìn qua mã 200; nếu trang giống “không tìm thấy”, trang sẽ được xếp và báo cáo như lỗi thật.

Các trường hợp cần kiểm tra nhanh gồm sản phẩm đã ngừng bán nhưng chỉ tải template trống, bài viết đã xóa vẫn trả về khung trang 200, hoặc danh mục đã lọc hay kết quả tìm kiếm không có mục nào và chỉ hiện thông báo “không có gì ở đây”. Tất cả đều trả mã đúng về kỹ thuật nhưng lại nói với người dùng và Google rằng không có nội dung đáng xem.

Website này có bài soft-404-errors riêng về cơ chế phát hiện và cách sửa. Điều cần rút ra ở đây là: trả về 200 cho trang thực sự đã biến mất chính là tiền đề tạo soft 404. Cách sửa là để mã phản ánh đúng thực tế.

Cạm bẫy liên quan: truyền tải thành công không đồng nghĩa ứng dụng thành công

Một điểm cần lưu ý trong API và giám sát là tầng HTTP và tầng ứng dụng có thể bất đồng. Endpoint API có thể trả 200 nhưng thân JSON chứa đối tượng lỗi; trang có thể trả 200 trong khi dependency phía sau thất bại và chỉ kết xuất một khối hỏng. Dòng trạng thái chỉ nói dữ liệu đã được chuyển ở tầng giao thức; payload có đúng hay không là câu hỏi riêng. Các nhóm có thể chọn báo lỗi API bằng mã khác 200 hoặc bọc payload lỗi trong 200 — đó là hợp đồng ứng dụng, không phải quy tắc HTTP. Với SEO, phiên bản cấp trang chính là soft 404: đừng chỉ tin dòng trạng thái, hãy kiểm tra thân phản hồi.

200, 204 và 304 — đừng đánh đồng

Ba mã thường bị nhầm lẫn, nhưng chỉ một mã mang nghĩa “đây là trang bạn yêu cầu”:

NhómThân phản hồiÝ nghĩaCách SEO xử lý
200 OK2xxDự kiến có nội dung thựcThành công — đây là tài nguyênĐủ điều kiện lập chỉ mục (không bảo đảm)
204 Không có nội dung2xxCố ý để trốngThành công nhưng không có thânBị xử lý như soft 404 trên URL trang — xem 204-no-content
304 Chưa thay đổi3xxKhông có“Dùng bản đã lưu” cho yêu cầu có điều kiệnTín hiệu lưu đệm, không phải quyết định lập chỉ mục

204 là mã thành công thật, nhưng thân rỗng khiến crawler không có gì để lập chỉ mục; vì vậy, trên URL trang nó rơi vào nhóm soft 404 (được giải thích ở bài riêng). 304 thuộc nhóm khác và trả lời yêu cầu có điều kiện (If-None-Match / If-Modified-Since) bằng cách yêu cầu client dùng bản đã lưu. Nó không có thân phản hồi và không nói gì về việc lập chỉ mục; đây là cơ chế tối ưu hiệu quả crawl, không phải phiên bản khác của 200.

Xác minh điều Googlebot thực sự thấy

Một khoảng trống nhiều bài khác bỏ qua là những bên gửi yêu cầu khác nhau có thể nhận mã khác nhau cho cùng URL. Trình duyệt có thể thấy 200 trong khi Googlebot nhận phản hồi khác — đôi khi do cloaking cố ý, vốn vi phạm chính sách spam của Google, nhưng thường do quy tắc WAF/chặn bot, nhắm mục tiêu theo IP địa lý, logic CDN ở edge hoặc thử nghiệm A/B xử lý bot sai.

Vì vậy, “trình duyệt của tôi thấy 200” không chứng minh “Google thấy 200”. Chẩn đoán đúng là kiểm tra phản hồi mà chính Googlebot nhận:

  • URL Inspection trong GSC — chạy Live Test để xem trạng thái và nội dung được kết xuất mà Google tìm nạp, thay vì phản hồi máy của bạn nhận.
  • Nhật ký máy chủ / CDN — bằng chứng gốc về mã mà từng user agent thực sự nhận.

Lệnh curl -I trong terminal rất hữu ích, nhưng đó chỉ là một bên gửi yêu cầu khác và có thể đi qua quy tắc edge khác Googlebot. Hãy coi kết quả là một điểm dữ liệu, không phải kết luận cuối cùng.

Cách kiểm tra và giám sát phản hồi 200

  • Browser DevTools — mở thẻ Network, tải lại trang, chọn yêu cầu document và đọc cột Status.
  • Dòng lệnh — dùng curl -I https://example.com/page để xem header của một yêu cầu; dùng curl -IL để đi theo chuỗi chuyển hướng.
  • Google Search Console — URL Inspection báo trạng thái đã crawl và cung cấp Live Test.
  • Bing Webmaster Tools — URL Inspection giúp xác nhận phản hồi Bingbot nhận. Bing không xuất bản tài liệu riêng về tác động của mã trạng thái đến lập chỉ mục như Google, nên không nên tự suy diễn chính sách.
  • Crawler — Screaming Frog và Ahrefs Site Audit tổng hợp mã trạng thái trên toàn website; Ahrefs SEO Toolbar miễn phí hiển thị mã của trang hiện tại.

Trạng thái “khỏe mạnh” nghĩa là các URL canonical quan trọng luôn trả về 200 cùng nội dung thực, còn trang đáng lẽ đã mất hoặc đã chuyển thì trả 404/410 hoặc 301 thay vì mã 200 gây hiểu lầm.

Quyết định trong một câu

Hãy để mã phản ánh đúng thực tế. Muốn có trong chỉ mục → 200 với nội dung thực chất. Đã biến mất vĩnh viễn → 404 hoặc 410 (xem 404-not-found). Đã chuyển địa chỉ → 301. Trùng lặp với URL khác → đặt thẻ canonical trỏ đến phiên bản ưu tiên thay vì cố dùng mã khác 200. Mã 200 là đèn xanh cho những trang thực sự xứng đáng — không hơn, không kém.

Try it live

This is a real endpoint on this site — not a simulation. Hit it from the button, open it in a new tab, or curl -i it from your terminal, and the server answers with the actual status code this article is about.

Open in new tab ↗

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.