Bỏ qua tới nội dung

robots.txt: chặn thu thập không phải chặn lập chỉ mục

robots.txt quyết định máy thu thập có được tải một đường dẫn hay không, không quyết định trang có nằm trong chỉ mục. Muốn gỡ trang khỏi Google thì dùng noindex và để trang mở cho Google đọc thẻ đó.

Ban biên tập SEO Gốc · · 7 phút đọc

robots.txt chỉ trả lời một câu hỏi: máy thu thập có được tải đường dẫn này hay không. Nó không quyết định trang có nằm trong kết quả tìm kiếm hay không. Một URL bị chặn trong robots.txt vẫn có thể hiện trên Google nếu có nơi khác liên kết tới nó, chỉ là Google không đọc được nội dung nên kết quả hiện trơ trọi, thường không có đoạn mô tả. Muốn một trang ra khỏi chỉ mục, bạn cần thẻ noindex, và để Google thấy được thẻ đó thì trang lại không được chặn trong robots.txt. Phần lớn lỗi robots.txt mà người làm nghề gặp đều bắt nguồn từ việc nhầm hai chuyện này.

robots.txt làm được gì và không làm được gì

Mục đíchDùng robots.txt?Cách đúng
Không cho Google tốn lượt tải vào trang lọc, trang tìm kiếm nội bộ, giỏ hàngCóDisallow theo mẫu đường dẫn
Gỡ một trang đã có trong chỉ mụcKhôngThẻ <meta name="robots" content="noindex"> hoặc tiêu đề HTTP X-Robots-Tag: noindex, để Google thu thập lại
Giấu trang quản trị, tệp nhạy cảmKhôngMật khẩu, chặn theo IP. robots.txt là tệp công khai, ghi đường dẫn vào đó là chỉ đường cho người tò mò
Chặn ảnh, video khỏi kết quả tìm ảnhCóDisallow đường dẫn tệp cho Googlebot-Image
Giảm tốc độ thu thập của GoogleKhôngGoogle bỏ qua Crawl-delay; máy chủ quá tải thì trả mã 503 hoặc 429 tạm thời
Khai báo sitemapCóDòng Sitemap: với URL tuyệt đối

Chỉ thị Noindex: viết trong robots.txt từng được Google âm thầm làm theo nhiều năm, nhưng Google đã chính thức ngừng hỗ trợ từ tháng 9/2019. Nếu bạn còn thấy dòng đó trong tệp của site cũ, nó không có tác dụng gì với Google nữa.

Cú pháp: những quy tắc Google thật sự áp dụng

Tệp phải nằm ở gốc của đúng tên máy và giao thức: https://www.vidu.com/robots.txt chỉ có hiệu lực cho https://www.vidu.com, không áp cho https://vidu.com hay https://shop.vidu.com. Mỗi tên miền phụ cần tệp riêng. Đường dẫn phân biệt chữ hoa chữ thường: Disallow: /Admin không chặn /admin.

User-agent: *
Disallow: /tim-kiem
Disallow: /*?sort=
Disallow: /gio-hang/
Allow: /gio-hang/huong-dan

User-agent: Googlebot-Image
Disallow: /anh-noi-bo/

Sitemap: https://vidu.com/sitemap.xml

Bốn điều cần nhớ khi đọc tệp này:

  1. Quy tắc dài nhất thắng. Với /gio-hang/huong-dan, cả Disallow: /gio-hang/ lẫn Allow: /gio-hang/huong-dan đều khớp; quy tắc Allow dài hơn nên trang được thu thập. Khi hai quy tắc dài bằng nhau và mâu thuẫn, Google chọn quy tắc ít hạn chế hơn (Allow). Thứ tự dòng trong tệp không quan trọng với Google.
  2. Dấu * khớp mọi chuỗi ký tự, dấu $ đánh dấu cuối URL. Disallow: /*.pdf$ chặn mọi tệp PDF nhưng không chặn /tai-lieu.pdf?v=2. Không phải máy thu thập nào cũng hiểu ký tự đại diện; Google và Bing hiểu, nhiều bot nhỏ thì không.
  3. Một máy thu thập chỉ theo một nhóm. Googlebot chọn nhóm có User-agent cụ thể nhất khớp với nó và bỏ qua hoàn toàn nhóm *. Nếu bạn viết một nhóm riêng cho Googlebot chỉ để thêm một dòng, mọi quy tắc trong nhóm * không còn áp cho Googlebot nữa, phải chép lại.
  4. Dòng Sitemap: không thuộc nhóm nào, đặt ở đâu trong tệp cũng được, và phải là URL tuyệt đối. Có thể khai nhiều dòng.

Google đọc tối đa 500 KiB đầu của tệp, phần sau bị bỏ. Site bình thường không bao giờ chạm mức này; nếu bạn chạm thì gần như chắc chắn tệp đang liệt kê từng URL thay vì dùng mẫu.

Mã trạng thái của robots.txt quan trọng hơn nội dung

Cách máy chủ trả lời yêu cầu /robots.txt quyết định hành vi của Google trước cả khi nó đọc dòng nào:

  • 200: Google đọc và làm theo nội dung.
  • 404, 410 và các mã 4xx khác (trừ 429): Google coi như site không có robots.txt, được thu thập toàn bộ. Không có tệp là tình trạng hoàn toàn chấp nhận được.
  • 5xx và 429: Google tạm dừng thu thập cả site vì không biết bạn muốn chặn gì. Nếu lỗi kéo dài, Google dùng bản robots.txt đã lưu trước đó; tình trạng này kéo dài nhiều tuần là site tụt lượt thu thập rõ rệt.
  • Chuyển hướng: Google đi theo một số bước chuyển hướng giới hạn. Chuyển hướng từ http:// sang https:// của chính site là bình thường.

Google lưu đệm robots.txt, thường tới khoảng một ngày, nên sửa tệp xong không có hiệu lực ngay lập tức. Trong Search Console có báo cáo robots.txt cho biết bản nào Google đang dùng và lần tải gần nhất.

Lỗi hay gặp

Quên gỡ Disallow: / sau khi lên sóng

Bản dựng thử chặn toàn bộ bằng Disallow: /, đến lúc chuyển sang tên miền thật thì tệp được chép theo. Site lên sóng ba tuần không có lượt hiển thị nào và chủ web tưởng "Google chưa biết đến". Đây là lỗi nặng nhất trong nhóm này, và là lý do công cụ của SEO Gốc thử cả trang chủ lẫn một đường dẫn ngẫu nhiên với Googlebot: chặn trang chủ đã đủ nặng, chặn cả hai nghĩa là chặn toàn site.

Chặn rồi lại muốn noindex

Một nhóm trang đã nằm trong chỉ mục, người ta thêm Disallow để "gỡ cho nhanh". Kết quả ngược lại: Google không được tải trang nữa nên không bao giờ thấy thẻ noindex, trang nằm lì trong chỉ mục với trạng thái "Đã lập chỉ mục, mặc dù bị robots.txt chặn". Thứ tự đúng là gắn noindex, chờ Google thu thập lại và gỡ, rồi mới chặn nếu thật sự cần tiết kiệm lượt thu thập.

robots.txt trả về trang HTML

Site dựng bằng khung JavaScript hoặc cấu hình "mọi đường dẫn về index.php" thường trả trang chủ với mã 200 cho /robots.txt. Google cố đọc HTML như robots.txt, không tìm thấy quy tắc hợp lệ nên coi như không chặn gì, và dòng Sitemap cũng mất. Kiểm bằng cách mở thẳng tệp trên trình duyệt: phải là chữ thuần, kiểu nội dung text/plain.

Chặn CSS và JavaScript

Thói quen cũ chặn /wp-includes/, /assets/ hay /static/ khiến Google không dựng được trang như người dùng thấy. Trang có thể bị đánh giá là không thân thiện di động, hoặc nội dung do JavaScript vẽ ra không được đọc. Đừng chặn tệp mà trình duyệt cần để hiển thị trang; xem thêm bài site dựng bằng JavaScript và cách Google đọc.

Nhóm riêng cho Googlebot nuốt mất quy tắc chung

Như đã nói ở trên, thêm User-agent: Googlebot với một dòng mới là toàn bộ nhóm * mất tác dụng với Googlebot. Lỗi này khó thấy vì tệp nhìn vẫn "đủ".

Chặn tham số bằng robots.txt thay vì sửa liên kết

Trang danh mục có bộ lọc sinh hàng nghìn tổ hợp ?mau=do&size=m&sort=gia. Chặn bằng Disallow: /*? giải quyết được chuyện lãng phí lượt thu thập, nhưng nếu chính các liên kết nội bộ đang trỏ vào URL có tham số thì sức mạnh liên kết dồn vào những trang Google không được đọc. Cách gọn hơn là liên kết nội bộ trỏ về URL sạch và dùng thẻ canonical gom biến thể; robots.txt chỉ là lớp chặn sau cùng. Chuyện lượt thu thập có đáng lo với site của bạn hay không, xem bài ngân sách thu thập.

Những việc không cần làm

  • Không cần liệt kê từng bot xấu. Bot cào nội dung không tuân theo robots.txt; chặn chúng phải làm ở tường lửa hoặc giới hạn tốc độ phía máy chủ.
  • Không cần Allow: / khi không có quy tắc chặn nào; mặc định đã là được phép.
  • Không cần Crawl-delay cho Google; Bing có đọc chỉ thị này nhưng nên điều chỉnh trong Bing Webmaster Tools.

Danh sách kiểm robots.txt

  1. Mở https://tenmien/robots.txt: mã 200 với chữ thuần, hoặc 404. Không phải 5xx, không phải trang HTML.
  2. Không có Disallow: / trong nhóm * hoặc nhóm Googlebot (trừ khi đó là bản dựng thử).
  3. Không chặn thư mục chứa CSS, JavaScript, ảnh mà trang cần để hiển thị.
  4. Có dòng Sitemap: trỏ tới sitemap đúng tên máy, đúng https. Cách dựng sitemap xem bài sitemap XML.
  5. Nếu có nhóm riêng cho Googlebot, nhóm đó đã chép đủ quy tắc của nhóm *.
  6. Trang cần gỡ khỏi chỉ mục dùng noindex, không dùng robots.txt.
  7. Mỗi tên miền phụ đang hoạt động có tệp riêng.

Quyết định cho hay chặn các bot AI như GPTBot, ClaudeBot, Google-Extended là chuyện riêng, có bài bot AI trong robots.txt.

Kiểm bằng SEO Gốc

Công cụ chấm điểm đọc robots.txt của bạn như Googlebot: báo khi tệp chặn toàn site, chặn trang chủ, trả mã lỗi hoặc trả HTML, và khi thiếu dòng Sitemap. Tiêu chí "cho phép lập chỉ mục" chiếm 10/100 điểm vì đây là lỗi duy nhất có thể xoá sạch lượt hiển thị chỉ trong vài ngày. Muốn biết bot AI nào đang bị chặn, dùng trang kiểm bot AI. Cách tính từng tiêu chí có ở thang chấm điểm.

Để kiểm một URL cụ thể có bị chặn hay không theo đúng cách Google hiểu, dùng công cụ Kiểm tra URL trong Search Console; tài liệu chính chủ về cú pháp ở Google Search Central.

Hỏi đáp

Chặn trang trong robots.txt có làm trang biến khỏi Google không?

Không chắc. Google không tải được trang nhưng vẫn có thể giữ URL trong chỉ mục nếu có liên kết trỏ tới, kết quả hiện không có mô tả. Muốn gỡ hẳn, gắn thẻ noindex và để trang mở cho Google thu thập lại.

Không có tệp robots.txt có sao không?

Không sao. Khi /robots.txt trả 404, Google coi như được phép thu thập toàn bộ site. Tệp chỉ cần khi bạn có thứ muốn chặn hoặc muốn khai báo sitemap.

robots.txt trả lỗi 500 thì Google làm gì?

Google tạm dừng thu thập site vì không biết bạn muốn chặn gì. Lỗi kéo dài thì Google dùng bản đã lưu trước đó, nhưng lượt thu thập sẽ giảm rõ. Đây là lỗi máy chủ cần sửa ngay.

Sửa robots.txt bao lâu thì Google áp dụng?

Google thường lưu đệm robots.txt khoảng một ngày. Báo cáo robots.txt trong Search Console cho biết bản Google đang dùng và cho phép yêu cầu tải lại khi cần gấp.

Đọc tiếp