Kiểm tra cú pháp robots.txt: công cụ soát được gì và bạn phải tự soát phần nào
Công cụ tải nội dung robots.txt từ tên miền bạn nhập hoặc nhận nội dung bạn dán vào, rồi soát từng dòng để tìm lỗi cú pháp: thiếu dòng User-agent, chỉ thị lạ, địa chỉ sơ đồ trang không đầy đủ, giá trị Crawl-delay không phải số. Đây là phép kiểm tra cú pháp, không phải phép kiểm tra xem quy tắc của bạn có chặn nhầm trang quan trọng hay không.
Tính năng nổi bật
- Nhập tên miền để công cụ tự lấy tệp robots.txt ở đường dẫn gốc của tên miền đó
- Hoặc dán thẳng nội dung robots.txt vào ô soạn thảo, kết quả cập nhật ngay khi bạn gõ
- Bắt lỗi thiếu hoàn toàn dòng User-agent, điều khiến cả tệp không có nhóm quy tắc nào
- Cảnh báo khi địa chỉ sơ đồ trang không bắt đầu bằng giao thức, tức là đường dẫn tương đối
- Báo lỗi khi giá trị Crawl-delay không phải một con số hợp lệ
- Cảnh báo các chỉ thị không nằm trong nhóm chuẩn, kèm số dòng để bạn tìm nhanh
- Báo lỗi những dòng không có dấu hai chấm, tức không đúng dạng tên chỉ thị và giá trị
- Nhắc khi tệp chưa khai báo sơ đồ trang, kèm phân loại kết quả theo ba mức đạt, cảnh báo và lỗi
Một tệp text vài dòng nhưng đủ sức làm cả website biến mất khỏi kết quả tìm kiếm
Robots.txt là tệp đầu tiên mà mọi bộ thu thập dữ liệu tìm tới trước khi đọc bất cứ trang nào của bạn, và nó là một trong số ít thứ trong kỹ thuật tìm kiếm mà một ký tự sai có thể gây hậu quả trên toàn bộ tên miền. Tình huống kinh điển là bản robots.txt của môi trường thử nghiệm, nơi người ta chặn toàn bộ để tránh bị lập chỉ mục, bị đẩy nhầm lên môi trường chính thức khi phát hành. Tình huống thứ hai là chặn thư mục chứa tệp giao diện và tệp kịch bản với ý định tiết kiệm hạn mức thu thập, khiến bộ thu thập không dựng được trang và đánh giá sai bố cục trên di động. Cả hai lỗi này đều không phải lỗi cú pháp, tệp vẫn hoàn toàn hợp lệ về mặt cấu trúc. Vì vậy hãy hiểu đúng vai trò của công cụ: nó dọn sạch nhóm lỗi hình thức để bạn không mất thời gian ở đó, còn phần quyết định là bạn phải đọc lại từng dòng Disallow và tự hỏi dòng này chặn cái gì.
Lợi ích khi sử dụng
- Bắt được nhóm lỗi hình thức mà mắt người hay bỏ sót khi đọc tệp dài
- Kiểm tra được nội dung dự thảo trước khi phát hành, không cần đưa lên máy chủ trước
- Chỉ rõ số dòng nên sửa nhanh, không phải dò lại từ đầu tệp
- Nhắc khai báo sơ đồ trang, một dòng hay bị bỏ quên khi chuyển nền tảng website
- Dùng nhanh trong lúc bàn giao dự án hoặc rà soát định kỳ hàng tháng cho nhiều tên miền
Cách kiểm tra một tệp robots.txt
- 1Nhập địa chỉ gốc của tên miền rồi bấm nút tải, công cụ sẽ tự nối thêm phần đường dẫn tới tệp robots.txt.
- 2Nếu việc tải không thành công, hãy mở tệp bằng trình duyệt rồi sao chép nội dung dán vào ô bên dưới, kết quả kiểm tra sẽ chạy lại ngay.
- 3Đọc danh sách kết quả theo thứ tự ưu tiên: xử lý hết các mục màu đỏ trước, sau đó xem xét các mục cảnh báo.
- 4Tự soát tiếp phần mà công cụ không kiểm tra: đọc từng dòng Disallow và xác định chính xác nó chặn những đường dẫn nào.
- 5Sau khi sửa và phát hành, mở lại tệp trên tên miền thật để chắc chắn máy chủ đang trả về đúng bản mới chứ không phải bản cũ trong bộ nhớ đệm.
Bốn chỉ thị chuẩn và cách bộ thu thập chọn nhóm quy tắc
Giao thức loại trừ dành cho bộ thu thập được chuẩn hóa chính thức thành tài liệu RFC 9309 vào năm 2022, sau gần ba mươi năm chỉ tồn tại như một quy ước. Theo đó, tệp gồm các nhóm, mỗi nhóm mở đầu bằng một hoặc nhiều dòng User-agent rồi tới các dòng Disallow và Allow áp dụng cho nhóm đó. Dòng Sitemap đứng độc lập, không thuộc nhóm nào, và có thể xuất hiện nhiều lần. Điểm mà nhiều người hiểu sai là cách chọn nhóm: mỗi bộ thu thập chỉ tuân theo đúng một nhóm, là nhóm có tên User-agent khớp cụ thể nhất với nó, và bỏ qua hoàn toàn các nhóm còn lại kể cả nhóm dùng dấu sao. Nghĩa là nếu bạn viết một nhóm riêng cho Googlebot chỉ với một dòng Disallow, thì mọi quy tắc trong nhóm dấu sao sẽ không còn hiệu lực với Googlebot nữa. Đây là nguyên nhân của rất nhiều trường hợp quy tắc tưởng đã đặt mà thực tế không chạy. Khi tách nhóm riêng cho một bộ thu thập, hãy chép lại đầy đủ các quy tắc chung vào nhóm đó.
Công cụ này không kiểm tra logic chặn, và đó là giới hạn cần biết
Phép kiểm tra ở đây chỉ soát hình thức từng dòng. Nó xác nhận có dòng User-agent, xác nhận địa chỉ sơ đồ trang bắt đầu bằng giao thức, xác nhận Crawl-delay là số, và cảnh báo những chỉ thị lạ hoặc dòng thiếu dấu hai chấm. Nó không phân tích các mẫu đường dẫn trong Disallow và Allow, không cho bạn nhập một địa chỉ cụ thể để hỏi địa chỉ đó có bị chặn hay không, và quan trọng nhất là nó không cảnh báo khi bạn viết một dòng Disallow chặn nguyên tên miền. Với công cụ này, một tệp chặn sạch toàn bộ website vẫn được báo là hợp lệ, bởi vì xét về cú pháp thì nó hợp lệ thật. Vì vậy bước bắt buộc sau khi chạy công cụ là tự đọc lại từng dòng chặn. Riêng nhóm quy tắc áp cho website đang chạy chính thức, hãy dùng thêm công cụ kiểm tra địa chỉ trong bảng quản trị tìm kiếm của Google, nơi cho biết chính xác một địa chỉ cụ thể có bị chặn không và bị chặn bởi dòng nào.
Chặn thu thập không đồng nghĩa với chặn lập chỉ mục
Đây là hiểu nhầm gây thiệt hại nhiều nhất trong thực tế. Dòng Disallow chỉ ngăn bộ thu thập tải nội dung trang, nó không ngăn địa chỉ trang xuất hiện trong kết quả tìm kiếm. Nếu có liên kết từ nơi khác trỏ tới, địa chỉ đó vẫn có thể được đưa vào chỉ mục, chỉ khác là hiển thị không có mô tả vì máy chưa từng đọc nội dung. Muốn một trang thật sự không xuất hiện trong kết quả tìm kiếm, bạn phải dùng thẻ meta robots với giá trị noindex hoặc tiêu đề phản hồi tương ứng, và điều kiện tiên quyết là trang đó phải cho bộ thu thập vào đọc. Nghịch lý ở chỗ nếu bạn vừa chặn trong robots.txt vừa đặt noindex trong trang thì noindex không bao giờ được nhìn thấy, và trang vẫn có thể nằm trong chỉ mục. Quy tắc thực hành là chọn một trong hai: chặn thu thập cho những vùng máy không cần đọc như trang kết quả tìm kiếm nội bộ, còn dùng noindex cho những trang máy cần đọc nhưng bạn không muốn hiển thị.
Ký tự đại diện, thứ tự ưu tiên và những lỗi viết mẫu đường dẫn
Chuẩn cho phép hai ký tự đặc biệt trong đường dẫn: dấu sao thay cho chuỗi ký tự bất kỳ, và dấu đô la đánh dấu kết thúc đường dẫn. Chặn mọi địa chỉ có tham số theo dõi thì viết Disallow với dấu sao rồi tới dấu hỏi; chặn riêng các tệp có phần mở rộng cụ thể thì kết thúc mẫu bằng dấu đô la. Khi một địa chỉ khớp cả dòng Allow lẫn dòng Disallow, quy tắc thắng là quy tắc có mẫu dài hơn tính theo số ký tự, không phải quy tắc đứng trước. Nhờ vậy bạn mới chặn được cả thư mục nhưng vẫn mở một tệp bên trong. Bốn lỗi hay gặp khi viết mẫu: quên dấu gạch chéo đầu tiên khiến mẫu không khớp gì cả; nhầm rằng đường dẫn không phân biệt chữ hoa chữ thường trong khi thực tế có phân biệt; viết Disallow với một đường dẫn đầy đủ kèm tên miền thay vì đường dẫn tương đối tính từ gốc; và để một dòng Disallow rỗng, vốn có nghĩa là cho phép tất cả chứ không phải cấm tất cả.
Đặt tệp ở đâu và những ràng buộc kỹ thuật khi phát hành
Tệp phải nằm đúng ở gốc của từng máy chủ và mỗi tổ hợp giao thức, tên miền, cổng được coi là một máy chủ riêng. Nghĩa là tên miền phụ cần tệp robots.txt của riêng nó; bản đặt ở tên miền chính không có hiệu lực với tên miền phụ. Tệp phải trả về mã trạng thái thành công và kiểu nội dung là văn bản thuần; nếu máy chủ trả về trang lỗi 404 thì bộ thu thập hiểu là không có hạn chế nào và sẽ thu thập tất cả, còn nếu trả về lỗi máy chủ kéo dài thì Google có thể tạm coi như toàn bộ website bị chặn. Về dung lượng, Google chỉ đọc tối đa khoảng 500 kilobyte đầu tiên và bỏ qua phần vượt quá, nên đừng nhét hàng nghìn dòng chặn từng địa chỉ. Nội dung nên lưu ở dạng mã hóa UTF-8 không kèm dấu đánh dấu thứ tự byte ở đầu tệp, vì dấu này có thể làm dòng đầu tiên bị đọc sai. Sau khi phát hành, hãy mở tệp trên trình duyệt ở chế độ ẩn danh để chắc chắn bạn đang xem bản mới.
Câu hỏi thường gặp (FAQ)
Công cụ có cảnh báo khi tôi chặn nhầm toàn bộ website không?
Không. Đây là bộ kiểm tra cú pháp, nó chỉ soát hình thức của từng dòng. Một tệp chặn sạch toàn bộ tên miền vẫn được báo hợp lệ vì về mặt cấu trúc thì đúng là hợp lệ. Sau khi chạy công cụ, bạn bắt buộc phải tự đọc lại từng dòng Disallow và xác định nó chặn những đường dẫn nào.
Nội dung robots.txt của tôi có được gửi ra ngoài không?
Nếu bạn dán nội dung vào ô soạn thảo thì việc kiểm tra chạy hoàn toàn trong trình duyệt. Nhưng khi bạn dùng chức năng nhập tên miền để tải tệp, yêu cầu đó đi qua một dịch vụ trung chuyển của bên thứ ba vì trình duyệt không cho phép gọi thẳng sang tên miền khác. Với nội dung nhạy cảm, hãy dùng cách dán thủ công.
Chặn trong robots.txt có làm trang biến mất khỏi kết quả tìm kiếm không?
Không chắc chắn. Disallow chỉ ngăn bộ thu thập đọc nội dung trang, còn địa chỉ vẫn có thể xuất hiện trong kết quả nếu có liên kết từ nơi khác trỏ tới, chỉ khác là không có mô tả. Muốn trang không xuất hiện, bạn phải dùng thẻ meta robots giá trị noindex và phải cho bộ thu thập vào đọc trang đó.
Vừa đặt Disallow vừa đặt noindex có chắc ăn hơn không?
Ngược lại, đó là cách làm sai. Khi trang bị chặn trong robots.txt, bộ thu thập không tải trang nên không bao giờ nhìn thấy thẻ noindex, và trang vẫn có thể nằm trong chỉ mục. Hãy chọn một trong hai: chặn thu thập cho vùng máy không cần đọc, hoặc mở cho đọc rồi đặt noindex cho trang không muốn hiển thị.
Vì sao quy tắc trong nhóm dấu sao không có tác dụng với Googlebot?
Vì mỗi bộ thu thập chỉ tuân theo đúng một nhóm, là nhóm có tên khớp cụ thể nhất với nó. Nếu trong tệp đã có một nhóm riêng đặt tên Googlebot thì Googlebot bỏ qua hoàn toàn nhóm dấu sao. Khi tách nhóm riêng cho một bộ thu thập, hãy chép đầy đủ các quy tắc chung vào nhóm đó.
Khi một địa chỉ khớp cả Allow lẫn Disallow thì bên nào thắng?
Quy tắc có mẫu đường dẫn dài hơn tính theo số ký tự sẽ thắng, không phụ thuộc thứ tự các dòng trong tệp. Nhờ cơ chế này bạn có thể chặn cả một thư mục nhưng vẫn mở riêng một tệp bên trong nó. Nếu hai mẫu dài bằng nhau thì quy tắc cho phép được ưu tiên.
Crawl-delay có tác dụng với Google không?
Không, Google bỏ qua chỉ thị này. Một số bộ thu thập khác như của Bing và Yandex có tính đến. Nếu bạn cần giảm tải cho máy chủ trước Googlebot, hãy dùng phần cài đặt tốc độ thu thập trong bảng quản trị tìm kiếm hoặc xử lý ở tầng máy chủ, đừng trông chờ vào dòng này.
Vì sao địa chỉ sơ đồ trang phải viết đầy đủ?
Vì dòng Sitemap không thuộc nhóm nào và không gắn với ngữ cảnh tên miền như các dòng Disallow, nên nó bắt buộc phải là địa chỉ tuyệt đối gồm cả giao thức và tên miền. Viết đường dẫn tương đối là dòng đó bị bỏ qua, và đây chính là cảnh báo mà công cụ báo cho bạn.
Tên miền phụ có dùng chung robots.txt với tên miền chính không?
Không. Mỗi tổ hợp giao thức, tên miền và cổng được coi là một máy chủ riêng, nên tên miền phụ cần tệp robots.txt của riêng nó đặt ở gốc của chính nó. Đây là chỗ hay quên khi triển khai môi trường thử nghiệm trên một tên miền phụ và tưởng rằng nó đã được chặn.
Không có tệp robots.txt thì sao?
Khi máy chủ trả về mã 404 cho đường dẫn robots.txt, bộ thu thập hiểu là không có hạn chế nào và sẽ thu thập toàn bộ. Điều này thường không gây hại, nhưng bạn mất chỗ khai báo sơ đồ trang. Đáng lo hơn là trường hợp máy chủ trả về lỗi kéo dài, vì khi đó Google có thể tạm coi như toàn bộ website bị chặn.
Đường dẫn trong robots.txt có phân biệt chữ hoa chữ thường không?
Có. Một dòng chặn thư mục viết chữ thường sẽ không khớp với đường dẫn thật viết chữ hoa, và ngược lại. Ngoài ra tên tệp robots.txt cũng phải viết đúng toàn bộ bằng chữ thường. Riêng tên chỉ thị như User-agent hay Disallow thì không phân biệt hoa thường.
Tệp robots.txt được phép dài bao nhiêu?
Google chỉ đọc khoảng 500 kilobyte đầu tiên và bỏ qua phần vượt quá, nên một tệp phình to vì liệt kê từng địa chỉ sẽ có phần cuối bị mất hiệu lực mà không có cảnh báo nào. Hãy gộp các quy tắc bằng mẫu ký tự đại diện thay vì liệt kê, và xử lý các trường hợp lẻ bằng thẻ noindex trên chính trang đó.
Từ khóa liên quan
- kiểm tra robots.txt
- robots.txt là gì
- cách viết robots.txt
- robots.txt chuẩn seo
- disallow robots.txt
- allow và disallow
- khai báo sitemap trong robots.txt
- chặn googlebot
- noindex và disallow khác nhau
- robots.txt cho wordpress
- lỗi robots.txt chặn toàn site
- crawl budget
- user-agent googlebot
- rfc 9309
- kiểm tra url bị chặn
- robots.txt tên miền phụ
- meta robots noindex
- technical seo cơ bản
- robots.txt validator
- website không được index
