Robots.txt là một tệp văn bản đơn giản nằm ở thư mục gốc của website (ví dụ: www.example.com/robots.txt). Nó đóng vai trò là một bộ quy tắc, hướng dẫn các trình thu thập dữ liệu web (bot) về những phần của website mà chúng được phép hoặc không được phép truy cập và thu thập dữ liệu.
Vậy sử dụng file robots.txt như thế nào tốt nhất cho SEO? Tất cả sẽ được mình, Nguyễn Thanh Trường – Founder & CEO của SEO Center chia sẻ chi tiết trong bài viết dưới đây.
Mục tiêu của bài viết này là giúp bạn hiểu rõ tất cả các kiến thức về Robots.txt từ cơ bản tới nâng cao, qua đó mà bạn có thể tự viết quy tắc cho file Robots.txt cho chính website của mình.
Nội dung chính của bài viết:
Robots.txt là một tệp văn bản đơn giản nằm ở thư mục gốc của website, đóng vai trò là “bộ quy tắc” hướng dẫn các bot tìm kiếm (như Googlebot) về những phần nào của website chúng được phép hoặc không được phép truy cập để thu thập dữ liệu.
Mục đích chính của Robots.txt là tối ưu hóa ngân sách thu thập dữ liệu bằng cách ngăn bot lãng phí thời gian vào các trang không quan trọng (như trang tìm kiếm nội bộ, URL lọc, các tệp không liên quan đến hiển thị) và giúp quản lý lưu lượng truy cập của bot, tránh quá tải máy chủ.
Tuyệt đối không sử dụng Robots.txt như một cơ chế bảo mật để ẩn thông tin nhạy cảm, vì các bot độc hại có thể bỏ qua chỉ thị, và trang bị chặn vẫn có thể xuất hiện trong kết quả tìm kiếm nếu có liên kết đến nó; để ẩn hoàn toàn, cần dùng thẻ noindex.
Cú pháp Robots.txt tuân theo các lệnh User-agent (chỉ định bot), Disallow (cấm truy cập), Allow (cho phép truy cập, ghi đè Disallow) và Sitemap (chỉ đường đến Sitemap XML), đồng thời hỗ trợ các ký tự đại diện như * (khớp nhiều ký tự) và $ (khớp cuối URL) để tạo quy tắc linh hoạt.
Mỗi tên miền, tên miền phụ, giao thức (HTTP/HTTPS) cần có tệp robots.txt riêng; việc kiểm tra và khắc phục lỗi Robots.txt (đặc biệt qua Google Search Console Robots.txt Validator) là cực kỳ quan trọng để đảm bảo website không vô tình bị chặn khỏi công cụ tìm kiếm.
Nội dung bài học
Robots.txt là gì?
Robots.txt là một tập tin văn bản có dạng đuôi mở rộng txt, chuyên dùng để quản lý khả năng truy cập của trình thu thập dữ liệu.
Dễ hiểu thì, tệp Robots.txt giống bộ luật của trường học. Bộ luật của trường sẽ quy định học sinh khi vào trường được làm gì và không được làm gì. Còn Robots.txt là tập hợp các quy tắc hướng dẫn các bot được phép hoặc không được phép truy cập và thu thập dữ liệu các trang nào trên website.
Dưới đây là 1 mẫu robots.txt cơ bản của 1 website:
Về bản chất, Robots.txt chỉ là một tệp văn bản thuần túy. Nó không phải là một chương trình phức tạp hay một phần mềm đặc biệt. Bạn có thể mở nó bằng bất kỳ trình soạn thảo văn bản đơn giản nào như Notepad trên Windows hay TextEdit trên Mac.
Tệp này phải được đặt ở thư mục gốc (root directory) của website của bạn. Ví dụ, nếu website của bạn là www.example.com, thì tệp Robots.txt phải nằm ở www.example.com/robots.txt. Nếu nó không nằm ở đó, các bot sẽ không tìm thấy và sẽ nghĩ rằng chúng được phép thu thập dữ liệu toàn bộ website của bạn mà không có bất kỳ hạn chế nào.
Đặc biệt, mỗi tên miền, tên miền phụ (subdomain), giao thức (HTTP/HTTPS) và port phải có tệp robots.txt riêng.
File Robot txt của SEO Center
Tệp Robots.txt là một thành phần cơ bản của một tiêu chuẩn được gọi là Giao thức Loại trừ Robot (Robots Exclusion Protocol – REP). Tiêu chuẩn này đã được đề xuất từ năm 1994 và được Google đề xuất chính thức trở thành tiêu chuẩn bởi IETF (Lực lượng Đặc nhiệm Kỹ thuật Internet) vào năm 2019, và một tiêu chuẩn được đề xuất đã được xuất bản vào năm 2022.
Hầu hết các bot tìm kiếm “tốt” (như Googlebot) đều tuân thủ các chỉ thị trong tệp này. Tuy nhiên, cần lưu ý rằng đây là một giao thức dựa trên sự tuân thủ tự nguyện, có nghĩa là các bot “xấu” có thể bỏ qua các chỉ thị này.
Bạn có thể xem qua video chia sẻ về quá khứ, hiện tại và tương lai của tệp Robots.txt được Google chia sẻ dưới đây:
Mục đích chính của Robots.txt
Quản lý lưu lượng truy cập của bot và tránh quá tải máy chủ
Mục đích chính của Robots.txt là quản lý việc các bot tìm kiếm truy cập vào website của bạn.
Đặc biệt là đối với các website lớn, việc này giúp ngăn trình thu thập dữ liệu gửi quá nhiều yêu cầu đến máy chủ của bạn, tránh làm máy chủ bị quá tải (dẫn đến chậm, hoặc thậm chí là sập website).
Ví dụ: Website của bạn có 1 website bán hàng online với hàng triệu sản phẩm, và có nhiều trang phát sinh tự động như các trang kết quả lọc theo màu sắc, kích cỡ, giá cả (ví dụ: example.vn/quan-ao?mau=do&size=m).
Những trang này có thể tạo ra vô số biến thể URL không có giá trị độc nhất và có thể gây lãng phí tài nguyên của máy chủ và Googlebot. Robots.txt sẽ giúp bạn ngăn Googlebot lãng phí thời gian và tài nguyên vào những trang này.
Tối ưu hóa ngân sách thu thập dữ liệu
Mỗi website có một “ngân sách” nhất định mà Googlebot dành ra để thu thập dữ liệu. Robots.txt giúp hướng Googlebot tập trung vào các trang quan trọng và có giá trị nhất trên website của bạn, thay vì lãng phí thời gian vào những trang không cần thiết.
Quản lý tốt file robotstxt sẽ giúp tối ưu hóa ngân sách thu thập dữ liệu
Kiểm soát hiển thị trong tìm kiếm (một cách gián tiếp)
Robots.txt cho phép bạn quản lý những gì được thu thập dữ liệu. Dù nó không trực tiếp ngăn chặn việc lập chỉ mục (tức là không trực tiếp ẩn trang khỏi kết quả tìm kiếm), nhưng Robots.txt làm việc cùng với các chức năng khác như Sitemap, Thẻ Canonical, và chỉ thị noindex để hướng dẫn các công cụ tìm kiếm đến nội dung quan trọng của bạn.
Lưu ý quan trọng: Robots.txt không phải là cơ chế để ẩn một trang khỏi Google Tìm kiếm. Một trang bị chặn bởi Robots.txt vẫn có thể xuất hiện trong kết quả tìm kiếm nếu có các website khác liên kết đến nó. Để ẩn hoàn toàn một trang, bạn cần sử dụng thẻ noindex (đặt trong mã HTML của trang hoặc trong HTTP header) hoặc bảo vệ trang bằng mật khẩu.
Ngăn chặn bot không mong muốn và bot AI
Robots.txt cũng là tuyến phòng thủ đầu tiên chống lại các bot không mong muốn, như các bot “cào” dữ liệu hoặc các bot thu thập nội dung để đào tạo mô hình trí tuệ nhân tạo (AI).
Bạn có thể chỉ định rõ ràng các user-agent (tên của bot) của những bot AI này và chặn chúng truy cập toàn bộ hoặc một phần website của bạn. Điều này giúp giảm tải máy chủ do các bot không cần thiết gây ra.
Ví dụ: Nếu bạn không muốn các mô hình AI như Chat GPT sử dụng nội dung từ website của mình để đào tạo, bạn có thể thêm các dòng như:
Điều này sẽ yêu cầu các bot có tên GPT Bot và ClaudeBot không thu thập dữ liệu bất kỳ phần nào của website bạn.
Cú pháp cơ bản của Robots.txt
Tệp robots.txt là một tệp văn bản thuần túy (chỉ chứa chữ và số đơn giản, không có định dạng phức tạp như chữ đậm, in nghiêng, màu sắc). Nó phải được đặt tên chính xác là robots.txt (viết thường toàn bộ) và nằm ở thư mục gốc của web.
Mỗi tên miền, tên miền phụ (subdomain), giao thức (HTTP/HTTPS) và cổng (port) cần có tệp robots.txt riêng của nó. Ví dụ, https://example.com/robots.txt sẽ khác với https://blog.example.com/robots.txt.
Các quy tắc trong robots.txt phân biệt chữ hoa/chữ thường. Điều này có nghĩa là “folder” và “Folder” được coi là hai thứ khác nhau.
Các quy tắc được sắp xếp thành các “nhóm” (group), mỗi nhóm dành cho một hoặc nhiều loại bot cụ thể. Mỗi dòng bắt đầu bằng # được coi là nhận xét (comment) và sẽ bị bỏ qua bởi các bot. Nhận xét giúp người đọc dễ hiểu hơn về mục đích của các quy tắc.
Dưới đây là các “lệnh” (directive) chính mà bạn sẽ thấy trong robots.txt:
User-agent
Lệnh này dùng để chỉ định “ai” (loại bot nào) mà các quy tắc sau đó sẽ áp dụng cho.
Bạn có thể đặt tên cụ thể của bot như Googlebot (bot của Google), Bingbot (bot của Bing), GPTBot (bot thu thập dữ liệu cho OpenAI).
Nếu bạn muốn áp dụng quy tắc cho tất cả các bot “hiền lành”, bạn sẽ dùng dấu hoa thị (*), ví dụ: User-agent: *. (Lưu ý: Các bot AdsBot của Google cần được chỉ định rõ ràng nếu muốn chặn).
Ví dụ:
User-agent: Googlebot# Quy tắc này dành cho GooglebotUser-agent: *# Quy tắc này dành cho tất cả các bot khác
HTML
Disallow
Lệnh này có nghĩa là “không cho phép”. Nó được dùng để ngăn trình thu thập dữ liệu truy cập vào các URL hoặc thư mục cụ thể trên web của bạn.
Đường dẫn phải bắt đầu bằng dấu /.
Nếu bạn muốn chặn một thư mục, đường dẫn đó phải kết thúc bằng dấu /.
Ví dụ:
Nếu bạn có một trang web bán hàng online “Cửa Hàng Quần Áo XYZ” và bạn không muốn Googlebot thu thập dữ liệu trang “giỏ hàng” hoặc “trang đăng nhập”, bạn có thể viết:
Điều này có nghĩa là “hỡi tất cả các bot, đừng vào thư mục giỏ hàng và đừng vào thư mục đăng nhập”.
Allow
Lệnh này có nghĩa là “cho phép”. Nó được dùng để cho phép truy cập vào các URL cụ thể, ngay cả khi toàn bộ thư mục chứa nó đã bị Disallow (lệnh Allow sẽ ghi đè lệnh Disallow trong trường hợp này).
Ví dụ:
Bạn có một thư mục /private/ mà bạn muốn chặn tất cả các bot truy cập. Nhưng trong thư mục đó lại có một tệp private/thong-bao-cong-khai.html mà bạn muốn Googlebot được phép truy cập. Bạn sẽ viết:
Trong trường hợp này, Allow sẽ ưu tiên hơn Disallow cho riêng tệp thong-bao-cong-khai.html.
Sitemap
Lệnh này giúp bạn chỉ ra vị trí của tệp XML Sitemap của trang web cho các công cụ tìm kiếm. XML Sitemap là một danh sách các trang quan trọng trên trang web của bạn, giúp công cụ tìm kiếm dễ dàng khám phá và thu thập dữ liệu chúng hiệu quả hơn.
Lệnh Sitemap phải sử dụng URL đầy đủ (bao gồm cả http:// hoặc https:// và tên miền), không được dùng đường dẫn tương đối.
Bạn có thể liệt kê nhiều Sitemap trong cùng một tệp robots.txt.
Lệnh này là một đề xuất về số giây mà bot nên đợi giữa các lần truy cập liên tiếp vào trang của bạn. Mục đích là để ngăn bot “quá nhanh” làm quá tải máy chủ website.
QUAN TRỌNG: Googlebot bỏ qua hoàn toàn lệnh này. Các công cụ tìm kiếm khác như Bing hay Yandex có thể tuân thủ nó, nhưng Google thì không. Để kiểm soát tốc độ thu thập dữ liệu của Googlebot, bạn cần sử dụng cài đặt trong Google Search Console.
Điều này đã được John Mueller chia sẻ trong video dưới đây:
Ví dụ (cho các bot khác ngoài Googlebot):
User-agent: BingbotCrawl-delay: 10
HTML
Lệnh này yêu cầu Bingbot đợi 10 giây giữa mỗi lần truy cập.
Sử dụng dấu * và $ trong robots.txt
Các ký tự đại diện là những biểu tượng đặc biệt giúp bạn viết các quy tắc linh hoạt hơn mà không cần liệt kê từng URL cụ thể.
Dấu hoa thị (*)
Dấu * trong robots.txt là ký tự đại diện (wildcard) để thay thế cho bất kỳ chuỗi ký tự nào (kể cả rỗng). Nó thường dùng để chặn hoặc cho phép nhiều URL theo một mẫu chung.
Ví dụ cụ thể
1. Chặn mọi file trong một thư mục
Disallow: /private/*
❌ /private/abc.html
❌ /private/image.png
❌ /private/test/test2.html
2. Chặn tất cả URL có query string
Disallow: /?s=*
❌ /?s=seo
❌ /?s=cach-viet-content
Dấu đô la ($)
Trong robots.txt, dấu $ có nghĩa là kết thúc chuỗi URL (end of string).
Nói cách khác, khi bạn thêm $ vào cuối một pattern, bạn đang yêu cầu bot chỉ áp dụng quy tắc đó cho những URL chính xác kết thúc tại ký tự cuối cùng trước $.
Ví dụ:
Không có $
Allow: /cua-hang/
→ Cho phép crawl tất cả URL bắt đầu bằng /cua-hang/, ví dụ:
/cua-hang/
/cua-hang/abc
/cua-hang/san-pham-1
Có $
Allow: /cua-hang/$
→ Chỉ cho phép crawl URL kết thúc chính xác bằng /cua-hang/, ví dụ:
✅ /cua-hang/
❌ /cua-hang/abc (không được)
❌ /cua-hang/san-pham-1
Khi nào dùng $?
Khi bạn chỉ muốn bot truy cập vào một URL cụ thể (ví dụ: chỉ trang index của thư mục).
Tránh bot crawl sâu vào các thư mục con hoặc trang chi tiết không mong muốn.
Thứ tự ưu tiên trong Robots.txt
Khi có nhiều quy tắc trong tệp robots.txt mà có vẻ như “mâu thuẫn” với nhau, các công cụ tìm kiếm sẽ có cách riêng để quyết định quy tắc nào sẽ được áp dụng. Googlebot tuân theo các nguyên tắc sau:
Quy tắc cụ thể nhất được ưu tiên
Google sẽ áp dụng quy tắc nào khớp với nhiều ký tự nhất trong URL. Quy tắc càng chi tiết thì càng được ưu tiên.
Trong trường hợp này, trang example.com/san-pham/ao-thun/ sẽ được phép thu thập dữ liệu, vì quy tắc Allow: /san-pham/ao-thun/ cụ thể hơn (nhiều ký tự khớp hơn) so với quy tắc Disallow: /san-pham/. Googlebot sẽ chặn tất cả các đường dẫn khác trong /san-pham/ nhưng vẫn cho phép /san-pham/ao-thun/.
Quy tắc ít hạn chế nhất được ưu tiên
Nếu có nhiều quy tắc có độ cụ thể như nhau (số lượng ký tự khớp giống nhau) nhưng lại mâu thuẫn (một cho phép, một cấm), Google sẽ chọn quy tắc ít hạn chế nhất (tức là quy tắc Allow).
Ví dụ: Nếu bạn có hai quy tắc sau (hiếm khi xảy ra nhưng có thể):
Vì cả hai quy tắc đều có độ dài khớp tương đương, Google sẽ chọn quy tắc Allow (ít hạn chế hơn), và do đó thư mục /tai-lieu/ sẽ được phép thu thập dữ liệu.
User-agent cụ thể hơn được ưu tiên
Nếu có các quy tắc dành cho User-agent: Googlebot và các quy tắc khác dành cho User-agent: * (tất cả các bot), thì Googlebot sẽ ưu tiên tuân theo các quy tắc được viết riêng cho Googlebot và bỏ qua các quy tắc chung cho User-agent: *. Điều này có nghĩa là các User-agent cụ thể hơn không “kế thừa” các chỉ thị từ các User-agent ít cụ thể hơn.
Trong trường hợp này, Googlebot sẽ chỉ xem xét các quy tắc trong phần User-agent: Googlebot. Vì không có quy tắc Disallow nào trong phần đó (đối với /khuyen-mai/) mà chỉ có Allow cho một đường dẫn cụ thể, nên Googlebot sẽ được phép thu thập ao-giam-gia và không bị ảnh hưởng bởi Disallow chung cho *.
Google bỏ qua thứ tự các quy tắc trong tệp: Không giống như một số trình phân tích robots.txt khác, Google không quan tâm đến thứ tự bạn sắp xếp các quy tắc trong tệp của mình. Bạn có thể sắp xếp chúng theo cách nào dễ đọc và quản lý nhất cho bạn.
Các trường hợp sử dụng trong Robots.txt phổ biến
1. Chặn các trang tìm kiếm nội bộ
Hầu hết các website đều có chức năng tìm kiếm nội bộ, cho phép người dùng tìm kiếm thông tin ngay trên website đó. Khi bạn thực hiện một tìm kiếm, URL thường sẽ chứa các tham số truy vấn (query parameters) như ?s= (phổ biến trên WordPress).
Các trang kết quả tìm kiếm nội bộ này thường không có giá trị độc đáo cho công cụ tìm kiếm và có thể tạo ra hàng nghìn, thậm chí hàng triệu URL không cần thiết hoặc trùng lặp, gây lãng phí tài nguyên của máy chủ và ngân sách thu thập dữ liệu của Googlebot.
Google đã cảnh báo về việc các URL “hành động” (action URLs) như vậy có thể khiến Googlebot thu thập dữ liệu vô thời hạn, kể cả các URL không tồn tại với các kết hợp tham số khác nhau.
Mục đích: Ngăn các công cụ tìm kiếm thu thập dữ liệu các trang này để tập trung vào nội dung quan trọng hơn.
Ví dụ: Để chặn tất cả các URL tìm kiếm nội bộ có chứa tham số s=, bạn có thể sử dụng quy tắc sau trong tệp robots.txt của mình:
User-agent: *Disallow: /?s=*
HTML
Giải thích ví dụ:
User-agent: *: Quy tắc này áp dụng cho tất cả các trình thu thập dữ liệu (như Googlebot, Bingbot, v.v.).
Disallow: /s=*: Quy tắc này yêu cầu các bot không thu thập dữ liệu bất kỳ URL nào có chứa chuỗi s=. Dấu * đại diện cho bất kỳ chuỗi ký tự nào (0 hoặc nhiều) trước hoặc sau s=.
Lưu ý: Quy tắc này phân biệt chữ hoa/thường, nên nó sẽ không chặn các URL có S= viết hoa (ví dụ: /?S=). Mặc dù Google có thể vẫn lập chỉ mục các trang bị chặn này nếu chúng được liên kết từ nơi khác, nhưng chúng thường sẽ bị loại bỏ dần theo thời gian.
2. Chặn URL điều hướng theo phân loại
Điều hướng theo phân loại hay còn gọi là bộ lọc sản phẩm là một phần không thể thiếu của các trang web thương mại điện tử (e-commerce). Nó cho phép người dùng lọc sản phẩm theo các tiêu chí như màu sắc, kích cỡ, giá cả, v.v..
Mặc dù trong một số trường hợp, các URL này có thể được sử dụng như một phần của chiến lược SEO, nhưng trong đa số trường hợp, chúng tạo ra hàng chục, thậm chí hàng trăm nghìn trang có nội dung trùng lặp hoặc không có giá trị độc đáo.
Mục đích: Ngăn các bot lãng phí ngân sách thu thập dữ liệu vào các trang bộ lọc không quan trọng.
Ví dụ: Nếu trang web của bạn có các bộ lọc với tham số orderby, filter,… bạn có thể sử dụng các quy tắc sau:
Nếu website của bạn chứa nhiều tài liệu PDF, như hướng dẫn sản phẩm, tài liệu quảng cáo, hoặc các bài báo có thể tải xuống mà bạn không muốn chúng xuất hiện trong kết quả tìm kiếm, bạn có thể chặn các bot truy cập chúng.
Mục đích: Ngăn chặn việc thu thập dữ liệu và hiển thị các tài liệu này trong kết quả tìm kiếm.
Ví dụ: Để chặn tất cả các tệp PDF trên trang web của bạn:
Disallow: /*.pdf$: Quy tắc này yêu cầu các bot không thu thập dữ liệu bất kỳ URL nào kết thúc bằng .pdf. Dấu /* khớp với bất kỳ đường dẫn nào trên website, và dấu $ đảm bảo rằng chỉ các URL kết thúc chính xác bằng .pdf mới bị chặn.
Ví dụ phức tạp hơn (có ưu tiên): Nếu bạn muốn chặn tất cả PDF trong một thư mục nhưng vẫn cho phép một tệp PDF cụ thể (ví dụ: document-quan-trong.pdf) được thu thập, bạn có thể làm như sau:
Trong trường hợp này, quy tắc Allow cụ thể hơn sẽ ưu tiên hơn quy tắc Disallow chung, cho phép tệp document-quan-trong.pdf được thu thập dữ liệu.
4. Chặn toàn bộ một thư mục
Đôi khi bạn có các thư mục trên trang web chứa nội dung không liên quan đến SEO hoặc không muốn công cụ tìm kiếm truy cập (ví dụ: các API endpoint, thư mục tạm thời, hoặc các trang quản trị).
Mục đích: Ngăn chặn việc thu thập dữ liệu tất cả các trang và tệp trong một thư mục cụ thể.
Ví dụ: Để chặn thư mục /bieu-mau/ (chứa các trang gửi biểu mẫu) khỏi việc thu thập dữ liệu:
User-agent: *Disallow: /bieu-mau/
HTML
Giải thích ví dụ: Bằng cách chỉ định tên thư mục và kết thúc bằng dấu gạch chéo (/), bạn yêu cầu các trình thu thập dữ liệu không truy cập bất kỳ trang nào nằm trong thư mục đó. Không cần sử dụng ký tự đại diện * sau tên thư mục nữa (ví dụ: /bieu-mau/*).
Cảnh báo quan trọng: Hãy cẩn thận với việc thiếu dấu gạch chéo cuối cùng. Ví dụ, Disallow: /bieu-mau (không có dấu gạch chéo cuối) sẽ chặn cả /bieu-mau-thiet-ke/, là một trang blog bạn có thể muốn được lập chỉ mục. Luôn sử dụng đường dẫn tương đối, không phải URL tuyệt đối (ví dụ: không dùng https://www.example.com/bieu-mau/).
5. Chặn URL tài khoản người dùng hoặc các trang riêng tư
Các web thương mại điện tử thường có các thư mục dành cho tài khoản người dùng (ví dụ: /taikhoan/, /taikhoan/donhang/, /taikhoan/thongtin/).
Bạn có thể muốn trang đăng nhập chính (/taikhoan/) được lập chỉ mục để người dùng dễ tìm thấy, nhưng lại muốn chặn các trang con riêng tư bên trong (ví dụ: trang lịch sử đơn hàng, trang chỉnh sửa hồ sơ).
Mục đích: Kiểm soát chi tiết việc thu thập dữ liệu, cho phép trang chính được truy cập trong khi vẫn bảo vệ các trang con riêng tư.
Ví dụ: Để chặn tất cả các trang dưới /taikhoan/ ngoại trừ chính trang /taikhoan/:
Disallow: /taikhoan/: Quy tắc này sẽ chặn toàn bộ thư mục /taikhoan/ và mọi thứ bên trong nó.
Allow: /taikhoan/$: Quy tắc này cho phép Googlebot truy cập chính xác URL /taikhoan/ (dấu $ chỉ định kết thúc URL). Vì Google ưu tiên quy tắc cụ thể nhất, nên nó sẽ cho phép trang /taikhoan/ được thu thập trong khi chặn tất cả các trang con khác trong thư mục đó.
Ví dụ SEMRush:
6. Chặn các tệp JavaScript không liên quan đến hiển thị
Mọi website đều sử dụng JavaScript, nhưng không phải tất cả các script đều quan trọng cho việc hiển thị nội dung của trang (ví dụ: script theo dõi, script tải quảng cáo AdSense). Googlebot có thể thu thập dữ liệu và hiển thị nội dung của trang mà không cần các script này.
Mục đích: Chặn chúng là an toàn và được khuyến nghị vì nó giúp tiết kiệm yêu cầu và tài nguyên để tìm nạp và phân tích chúng, từ đó tối ưu hóa ngân sách thu thập dữ liệu.
Ví dụ: Để chặn một tệp JavaScript cụ thể có chứa pixel theo dõi:
User-agent: *Disallow: /assets/js/custompixels.js
HTML
Giải thích ví dụ: Quy tắc này yêu cầu tất cả các bot không thu thập dữ liệu tệp custompixels.js trong thư mục /assets/js/.
7. Chặn Chatbot AI và Scraper
Nhiều chủ website lo ngại rằng nội dung của họ đang bị sử dụng không công bằng để đào tạo các mô hình AI mà không có sự đồng ý. Robots.txt có thể là lớp phòng thủ đầu tiên chống lại các trình thu thập dữ liệu không mong muốn như scraper hoặc các bot thu thập nội dung cho mục đích đào tạo AI.
Mục đích: Ngăn AI đào tạo trên nội dung của bạn và giảm tải máy chủ do việc thu thập dữ liệu không cần thiết.
Ví dụ: Để chặn một số chatbot AI và scraper phổ biến:
Lưu ý quan trọng: Quyết định chặn bot AI cần được thảo luận kỹ lưỡng với các bên liên quan, vì nó có thể làm giảm khả năng hiển thị trong các chatbot AI, điều này có thể không phù hợp với lợi ích kinh doanh của bạn. Một tệp mới có tên llms.txt cũng đang được đề xuất để giúp các mô hình AI hiểu về web của bạn và nội dung quan trọng nhất.
8. Chỉ định URL Sitemap
Sitemap là một tệp liệt kê tất cả các trang quan trọng trên website của bạn, giúp các công cụ tìm kiếm dễ dàng khám phá và thu thập dữ liệu chúng một cách hiệu quả hơn.
Mục đích: Giúp công cụ tìm kiếm dễ dàng phát hiện tất cả các trang quan trọng trên trang web của bạn.
Ví dụ: Để bao gồm URL sitemap của bạn trong tệp robots.txt:
Sitemap: https://example.com/sitemap_index.xml
HTML
Hạn chế và Nhầm lẫn của Robots.txt
Không phải cơ chế bảo mật
Đây là một trong những hiểu lầm lớn nhất về robots.txt.
Tệp robots.txt hoạt động dựa trên sự tuân thủ tự nguyện của các bot. Các công cụ tìm kiếm lớn và uy tín như Googlebot, Bingbot, Yahoo!, Ask, Baidu, DuckDuckGo, Kagi và Yandex đều tuân thủ các chỉ thị trong robots.txt.
Các bot độc hại hoặc những kẻ chuyên “cạo dữ liệu” (scraper) có thể hoàn toàn bỏ qua các chỉ thị trong tệp robots.txt của bạn. Thậm chí, một số bot độc hại còn có thể sử dụng tệp robots.txt như một “bản đồ” để tìm kiếm và truy cập vào các liên kết mà bạn muốn ẩn.
Vì lý do này, robots.txt không phải là một cơ chế bảo mật. Nó không thể thay thế việc bảo vệ web hoặc các tệp nhạy cảm bằng mật khẩu hoặc các biện pháp bảo mật phía máy chủ.
Không ngăn chặn việc lập chỉ mục
Mục đích chính của robots.txt là để quản lý lưu lượng truy cập của trình thu thập dữ liệu vào trang web của bạn, tức là hướng dẫn bot không “ghé thăm” các URL cụ thể. Tuy nhiên, việc chặn một trang bằng robots.txt không đảm bảo rằng trang đó sẽ không xuất hiện trong kết quả tìm kiếm của Google.
Nếu có các website khác (bên ngoài) liên kết đến URL bị chặn của bạn, Google vẫn có thể phát hiện và lập chỉ mục URL đó, ngay cả khi nó không thể truy cập nội dung trang.
Trong trường hợp này, URL có thể xuất hiện trong kết quả tìm kiếm với một đoạn trích chung chung như “Không có thông tin nào cho trang này” hoặc không có mô tả vì Google không thể đọc nội dung.
Để ẩn hoàn toàn một trang khỏi kết quả tìm kiếm của Google (tức là ngăn chặn việc lập chỉ mục), bạn cần sử dụng các phương pháp khác như:
Thẻ Meta noindex:
Tiêu đề HTTP X-Robots-Tag
Bảo vệ bằng mật khẩu
Áp dụng cho từng Origin (Miền, Giao thức, Cổng)
Tệp robots.txt chỉ áp dụng cho các URL trong cùng một origin (nguồn gốc) cụ thể. Một origin được xác định bởi tên miền (domain), giao thức (HTTP/HTTPS), và cổng (port). Điều này có nghĩa là:
Mỗi tên miền phụ (subdomain) phải có tệp robots.txt riêng.
Các phiên bản giao thức khác nhau (HTTP và HTTPS) cần tệp robots.txt riêng.
Các cổng khác chuẩn (ví dụ: https://example.com:8181/) cũng cần tệp robots.txt riêng.
Điều này tạo ra thách thức trong việc quản lý, đặc biệt nếu bạn có một trang web lớn với nhiều tên miền phụ hoặc các phiên bản giao thức khác nhau, vì bạn sẽ phải duy trì nhiều tệp robots.txt riêng biệt.
Để làm cho việc quản lý dễ dàng hơn, bạn có thể chuyển hướng 301 (HTTP 301 redirect) tất cả các tệp robots.txt của tên miền phụ hoặc phiên bản khác về một tệp robots.txt duy nhất ở miền gốc hoặc miền ưu tiên của bạn. Các công cụ tìm kiếm sẽ theo dõi chuyển hướng này và coi tệp cuối cùng là robots.txt chính thức.
Không nên dùng cho các thay đổi nhanh chóng hoặc tạm thời
Google không khuyến nghị sử dụng robots.txt để thực hiện các thay đổi việc thu thập dữ liệu một cách nhanh chóng hoặc liên tục (ví dụ: chặn một phần web trong một tuần, sau đó mở lại, rồi lại chặn phần khác).
Mặc dù Google kiểm tra tệp robots.txt của bạn hàng ngày (hoặc thường xuyên hơn), việc thay đổi quá nhanh có thể gây nhầm lẫn cho Googlebot và dẫn đến các vấn đề không mong muốn trong quá trình thu thập dữ thập dữ liệu và lập chỉ mục.
Thay vì thay đổi robots.txt liên tục, việc tối ưu hóa cấu trúc website là một cách hiệu quả và bền vững hơn để hướng dẫn Googlebot tập trung vào các phần quan trọng của website.
Cách tạo tệp Robots.txt thân thiện cho SEO
Note quan trọng: Nếu bạn đang sử dụng các CMS như WordPress thì bạn không cần phải đọc phần này vì bạn có thể sử dụng các Plugin SEO như RankMath hoặc Yoast SEO để tạo tệp Robots.txt tự động.
Còn nếu website bạn là web code tay thì phần này đặc biệt hữu ích với bạn.
Việc tạo tệp robots.txt là một quá trình đơn giản gồm 5 bước chính:
Bước 1. Quyết định nội dung cần kiểm soát
Trước khi bắt đầu viết bất kỳ quy tắc nào, bạn cần xác định những phần nào của website mà bạn muốn (hoặc không muốn) các công cụ tìm kiếm truy cập.
Bạn nên xem xét việc chặn các loại URL sau vì chúng thường không có giá trị công khai, có thể gây trùng lặp nội dung hoặc lãng phí ngân sách thu thập dữ liệu của bot:
Các trang tìm kiếm nội bộ
URL bộ lọc
URL hành động như trang “Thêm vào giỏ hàng” (Add to Cart), “Đăng nhập” (Login), “Thanh toán” (Checkout), “Trang cảm ơn” (Thank-you pages) hoặc trang hồ sơ người dùng
Các tệp JavaScript hoặc CSS không liên quan đến hiển thị nội dung
Các tệp PDF hoặc tài liệu khác mà bạn không muốn xuất hiện trong tìm kiếm
Bước 2. Tạo tệp văn bản thuần túy
Tệp robots.txt phải là một tệp văn bản thuần túy.
Bạn có thể sử dụng các trình soạn thảo văn bản đơn giản như Notepad (trên Windows), TextEdit (trên Mac).
Tuyệt đối không sử dụng các trình xử lý văn bản như Microsoft Word, vì chúng có thể thêm các ký tự không mong muốn hoặc lưu tệp dưới định dạng độc quyền, khiến các bot không thể đọc được.
Khi lưu tệp, hãy đảm bảo bạn lưu bằng phương thức mã hóa UTF-8 để tránh lỗi ký tự.
Tạo tệp robots.txt bằng notepad
Bước 3. Thêm các chỉ thị vào tệp
Các chỉ thị này được mình giới thiệu ở phần “Cú pháp cơ bản của Robots.txt” rồi, bạn có thể đọc lại các phần này để hiểu rõ hơn nhé.
Bước 4. Lưu tên tệp là robots.txt (chữ thường)
Tệp của bạn phải được đặt tên chính xác là robots.txt với tất cả các ký tự viết thường để các trình thu thập dữ liệu có thể nhận diện nó.
Bước 5. Tải lên thư mục gốc của website
Sau khi tạo tệp, bạn phải đặt nó trong thư mục gốc (root directory) của trang web.
Điều này có nghĩa là tệp phải nằm ở cấp cao nhất của trang web, không phải trong một thư mục con (ví dụ: https://www.example.com/robots.txt, chứ không phải https://www.example.com/trang/robots.txt).
Bạn có thể tải tệp lên bằng trình quản lý tệp của dịch vụ lưu trữ web (web hosting file manager), ứng dụng khách FTP (FTP client), hoặc thông qua cài đặt CMS của bạn nếu có.
Công cụ kiểm tra và khắc phục lỗi robots.txt
Đây là công cụ tích hợp sẵn trong Google Search Console, giúp bạn kiểm tra cú pháp, phát hiện lỗi và xác nhận các quy tắc trong tệp robots.txt của bạn hoạt động như mong muốn.
Bạn có thể truy cập bằng cách vào Settings > robots.txt trong Search Console.
Nó cho phép bạn xem phiên bản hiện tại và các phiên bản trước đó mà Google đã thấy, giúp bạn theo dõi các thay đổi và đảm bảo Googlebot luôn thấy đúng phiên bản.
Google Search Console Robots.txt Validator trong phần Setting của GSC
Kết luận
Robots.txt là một công cụ mạnh mẽ nhưng cần được sử dụng cẩn thận để tránh ảnh hưởng tiêu cực đến khả năng hiển thị và hiệu suất SEO của website.
Bài viết trên được mình nghiên cứu và tổng hợp từ nhiều nguồn thông tin uy tín như Semrush, Ahrefs, Search Engine Land, Google Search Central, Search Engine Journal,… kết hợp với kinh nghiệm hơn 7 năm làm SEO của mình. Nếu có điều gì còn thắc mắc thì bạn hãy để lại thông tin ở bình luận để cùng nhau trao đổi nhé.
Founder @ SEO Center – nơi mình và team triển khai SEO & CRO giúp website tăng trưởng thật và ra đơn thật. Mình là người chịu trách nhiệm đảm bảo mọi nội dung ở đây đều... có ích thật sự.