DEV Community

Mạnh Digital
Mạnh Digital

Posted on

Debug lỗi không index như debug code: đọc log Search Console trước

Khi production báo lỗi, không ai sửa bừa. Mình mở log, tìm stack trace, khoanh vùng module rồi mới viết patch. Thế nhưng với SEO, rất nhiều developer lại làm ngược: trang không lên Google là lập tức bấm "Request Indexing" năm bảy lần, như bấm F5 khi API trả về 500. Bài này là cách mình áp tư duy debug vào bài toán index, dựa trên hướng dẫn Index là gì trong SEO của team Mạnh Digital.

Định nghĩa vấn đề cho đúng

Trong ngữ cảnh SEO, index nghĩa là Google đã đọc trang, hiểu nội dung và lưu nó vào chỉ mục — cái database mà Google query mỗi khi người dùng tìm kiếm. Không có bản ghi trong database thì không có kết quả trả về, đơn giản vậy thôi. Nhưng có bản ghi cũng không có nghĩa là bạn ở top; đó mới là điều kiện cần.

Một điểm dev hay giả định sai: Google không có SLA nào về việc index toàn bộ site. Tài liệu chính thức nói thẳng rằng bạn không nên kỳ vọng mọi URL đều được lập chỉ mục. Vậy "bug" ở đây không phải là "có URL chưa được index", mà là "URL quan trọng chưa được index".

Hai stage: fetch và store

Hãy hình dung pipeline gồm hai bước. Bước một là crawl: Googlebot gửi request, tải HTML về. Bước hai là index: hệ thống quyết định có ghi trang đó vào chỉ mục hay không. Hai bước chạy nối tiếp nhưng độc lập — một URL có thể được fetch hàng chục lần mà vẫn bị từ chối ghi.

Vì vậy Search Console có hai trạng thái nghe rất giống nhau:

  • Đã phát hiện thấy – hiện chưa được lập chỉ mục: URL đã nằm trong hàng đợi nhưng chưa được fetch. Lỗi nằm ở stage một.
  • Đã thu thập dữ liệu – hiện chưa được lập chỉ mục: fetch xong rồi, nhưng stage hai trả về "chưa lưu". Lỗi nằm ở stage hai.

Nhầm hai cái này giống như debug frontend trong khi bug nằm ở backend.

Đọc log: công cụ Kiểm tra URL

Công cụ Kiểm tra URL trong Search Console là thứ gần với log nhất. Paste URL vào thanh trên cùng, kết quả "URL nằm trên Google" nghĩa là pass. Nếu là "URL không nằm trên Google", mở phần Lập chỉ mục trang để thấy reason code và thời điểm crawl gần nhất.

Nút "Kiểm tra URL đang hoạt động" thì giống chạy test trên bản build mới: nó cho biết phiên bản hiện tại có index được không, rất tiện khi bạn vừa deploy bản gỡ thẻ noindex. Lưu ý công cụ này có rate limit theo ngày cho mỗi property, nên đừng viết script dò từng URL.

Còn lệnh site: trên Google? Coi nó như console.log tạm bợ: nhanh, nhưng không đáng tin để kết luận, vì Google xác nhận kết quả không phải lúc nào cũng đầy đủ. Lệnh cache: thì đã bị gỡ từ 2024, đừng copy từ tutorial cũ nữa.

Những "reason code" thường gặp

Phần lớn URL trong nhóm không được lập chỉ mục là hành vi đúng, không phải bug. Một vài mã và cách xử lý:

  • URL có đánh dấu noindex — chỉ sửa nếu bạn gắn nhầm, ví dụ template staging lọt lên production.
  • Bị chặn bởi robots.txt — kiểm tra lại rule Disallow. Lưu ý: nếu chặn crawl, Google không đọc được thẻ noindex bên trong trang.
  • Trang thay thế có thẻ chính tắc thích hợp — expected behavior, bỏ qua.
  • Google chọn canonical khác với bạn — hai trang quá giống nhau; làm rõ trang chính, gộp hoặc tách nội dung.
  • Trang có lệnh chuyển hướng — dọn URL cũ khỏi sitemap và link nội bộ.
  • 404 / soft 404 — khôi phục, redirect sang trang tương đương, hoặc để 404 nếu trang thật sự đã chết.

Khi không có error để chỉ tay

Case khó nhất là "đã thu thập dữ liệu" vì không có lỗi kỹ thuật. Thường root cause là một trong ba: nội dung trùng ý với trang khác trên chính site, trang gần như không có internal link trỏ tới, hoặc nội dung không khác gì hàng chục bài cùng chủ đề. Fix là refactor nội dung, không phải retry.

Với "đã phát hiện thấy" trên site nhỏ, nguyên nhân phổ biến là trang chỉ có trong sitemap.xml mà không có link nội bộ nào. Crawl budget hiếm khi là vấn đề — Google nói chủ đề này dành cho site khoảng một triệu trang hoặc khoảng mười nghìn trang thay đổi mỗi ngày.

Quy trình fix gợi ý

  1. Inspect URL, ghi lại reason code.
  2. Loại trừ blocker kỹ thuật: meta robots, robots.txt, canonical, redirect.
  3. Thêm internal link từ những trang đã được index.
  4. Cải thiện hoặc gộp nội dung trùng.
  5. Kiểm tra sitemap, rồi request indexing đúng một lần.

Mình khuyên thêm bước kiểm tra meta robots và canonical vào checklist CI trước khi deploy. Nếu team bạn không có người chuyên technical SEO, có thể tham khảo dịch vụ SEO tại Hà Nội của Mạnh Digital — bài gốc của họ có bảng tra đầy đủ từng trạng thái.

Top comments (0)