Thông số kỹ thuật của tệp robots.txt

Tài liệu này sau đây nêu chi tiết cách Google xử lý tệp robots.txt, là một tệp cho phép bạn kiểm soát cách trình thu thập dữ liệu trang web của Google thu thập dữ liệu và lập chỉ mục các trang web truy cập công khai.

Thông số kỹ thuật của tệp robots
Thông số kỹ thuật của tệp robots

Ngôn ngữ yêu cầu

Các từ khóa “PHẢI”, “KHÔNG ĐƯỢC”, “BẮT BUỘC”, “SẼ PHẢI”, “NÊN”, “KHÔNG NÊN”, “KHUYẾN NGHỊ”, “CÓ THỂ” và “TÙY CHỌN” trong tài liệu này sẽ có nghĩa như mô tả trong RFC 2119.

Các định nghĩa cơ bản

Định nghĩa
Trình thu thập dữ liệu Trình thu thập dữ liệu là một dịch vụ hoặc tác nhân có chức năng thu thập dữ liệu trang web. Nói chung, trình thu thập dữ liệu sẽ tự động truy cập theo phương thức đệ quy các URL đã biết của một máy chủ lưu trữ mà hiển thị nội dung có thể truy cập bằng các trình duyệt web thông thường. Khi tìm thấy các URL mới (thông qua các phương thức khác nhau, chẳng hạn như thông qua các liên kết trên các trang hiện có đã thu thập dữ liệu hoặc thông qua các tệp Sơ đồ trang web), Google cũng thu thập dữ liệu các URL đó theo cách này.
Tác nhân người dùng Một phương tiện để xác định một trình thu thập dữ liệu hoặc nhóm trình thu thập dữ liệu cụ thể.
Lệnh Danh sách các nguyên tắc đặt ra trong tệp robots.txt, áp dụng cho một trình thu thập dữ liệu hoặc nhóm trình thu thập dữ liệu.
URL Định vị tài nguyên thống nhất như định nghĩa trong RFC 1738.
Riêng trên Google Các yếu tố này chỉ áp dụng cho cách Google triển khai robots.txt và có thể không phù hợp với các bên khác.

Khả năng áp dụng

Các nguyên tắc nêu trong tài liệu này được tất cả các trình thu thập dữ liệu tự động tại Google tuân theo. Khi một tác nhân thay mặt cho người dùng truy cập một URL (ví dụ: để dịch, lấy các nguồn cấp dữ liệu được đăng ký thủ công, phân tích phần mềm độc hại, v.v.), thì tác nhân đó không cần phải tuân theo nguyên tắc này.

Vị trí tệp và phạm vi hiệu lực

Tệp robots.txt phải nằm trong thư mục cấp cao nhất của máy chủ và có thể truy cập được qua giao thức và số cổng thích hợp. Các giao thức được chấp nhận chung cho robots.txt (và việc thu thập dữ liệu trang web) là “http” và “https”. Trên http và https, Google sẽ tìm nạp tệp robots.txt thông qua yêu cầu GET không có điều kiện HTTP.

Chỉ riêng trên Google: Google cũng chấp nhận và tuân theo các tệp robots.txt cho các trang FTP. Có thể truy cập các tệp robots.txt dựa trên FTP thông qua giao thức FTP bằng cách sử dụng thông tin đăng nhập ẩn danh.

Các lệnh liệt kê trong tệp robots.txt chỉ áp dụng cho máy chủ, giao thức và số cổng mà tệp được lưu trữ.

Ví dụ về URL robots.txt hợp lệ

Ví dụ về URL robots.txt
http://example.com/robots.txt Hợp lệ đối với:

  • http://example.com/
  • http://example.com/folder/file

Không hợp lệ đối với:

  • http://other.example.com/
  • https://example.com/
  • http://example.com:8181/
http://www.example.com/robots.txt Hợp lệ đối với: http://www.example.com/

Không hợp lệ đối với:

  • http://example.com/
  • http://shop.www.example.com/
  • http://www.shop.example.com/
http://example.com/folder/robots.txt Không phải là tệp robots.txt hợp lệ. Trình thu thập dữ liệu sẽ không kiểm tra các tệp robots.txt trong thư mục con.
http://www.müller.eu/robots.txt Hợp lệ đối với:

  • http://www.müller.eu/
  • http://www.xn--mller-kva.eu/

Không hợp lệ đối với: http://www.muller.eu/

ftp://example.com/robots.txt Hợp lệ đối với: ftp://example.com/

Không hợp lệ đối với: http://example.com/

Chỉ riêng trên Google: Chúng tôi sử dụng robots.txt cho các tài nguyên FTP.

http://212.96.82.21/robots.txt Hợp lệ đối với: http://212.96.82.21/

Không hợp lệ đối với: http://example.com/ (ngay cả khi được lưu trữ trên 212.96.82.21)

http://example.com:80/robots.txt Hợp lệ đối với:

  • http://example.com:80/
  • http://example.com/

Không hợp lệ đối với: http://example.com:81/

http://example.com:8181/robots.txt Hợp lệ đối với: http://example.com:8181/

Không hợp lệ đối với: http://example.com/

Xử lý mã kết quả HTTP

Nhìn chung, có ba kết quả khác nhau khi tìm nạp các tệp robots.txt:

  • cho phép toàn bộ: Cho phép thu thập dữ liệu toàn bộ nội dung.
  • hoàn toàn không cho phép: Không cho phép thu thập dữ liệu nội dung nào.
  • cho phép có điều kiện: Các lệnh trong tệp robots.txt xác định khả năng thu thập dữ liệu một số nội dung nhất định.
Xử lý mã kết quả HTTP
2xx (thành công) Mã kết quả HTTP cho biết kết quả thành công sẽ dẫn đến “cho phép có điều kiện” đối với việc thu thập dữ liệu.
3xx (chuyển hướng) Google thường sẽ theo các bước chuyển hướng cho đến khi tìm được kết quả hợp lệ (hoặc khi xác định được một vòng lặp). Chúng tôi sẽ chỉ theo một số bước chuyển hướng hạn chế (RFC 1945 cho HTTP/1.0 cho phép tối đa 5 bước) và sau đó dừng lại và xử lý là lỗi 404. Google chưa xác định và không khuyến khích việc xử lý các chuyển hướng robots.txt đến các URL không được phép. Google cũng chưa xác định và không khuyến khích việc xử lý các chuyển hướng logic cho tệp robots.txt dựa trên nội dung HTML trả về mã 2xx (khung, JavaScript hoặc chuyển hướng loại làm mới meta).
4xx (lỗi máy khách) Google xử lý tất cả các lỗi 4xx theo cùng một cách và cho rằng không tồn tại tệp robots.txt hợp lệ nào. Google cũng giả định rằng không có hạn chế nào. Kết quả sẽ là “cho phép toàn bộ” đối với việc thu thập dữ liệu.

5xx (lỗi máy chủ) Lỗi máy chủ được coi là lỗi tạm thời dẫn đến việc “hoàn toàn không cho phép” thu thập dữ liệu. Yêu cầu được thử lại cho đến khi nhận được mã kết quả HTTP không phải lỗi máy chủ. Lỗi 503 (Service Unavailable) sẽ dẫn đến việc thử lại khá thường xuyên. Để tạm thời chặn thu thập dữ liệu, bạn nên cung cấp mã kết quả HTTP 503. Google chưa xác định cách xử lý lỗi máy chủ cố định.

Chỉ riêng trên Google: Nếu có thể xác định rằng một trang web được định cấu hình không chính xác để trả về 5xx thay vì 404 cho các trang bị thiếu, chúng tôi sẽ coi lỗi 5xx từ trang web đó là 404.

Yêu cầu không thành công hoặc dữ liệu không đầy đủ Google chưa xác định cách xử lý tệp robots.txt không thể tìm nạp do DNS hoặc các sự cố mạng như hết thời gian chờ, phản hồi không hợp lệ, kết nối đặt lại/bị treo, lỗi khi nhóm dữ liệu HTTP, v.v.
Đang lưu vào bộ nhớ đệm Yêu cầu robots.txt thường được lưu trong bộ nhớ đệm tối đa một ngày, nhưng thời gian này có thể dài hơn trong các tình huống không thể làm mới phiên bản được lưu trong bộ nhớ đệm (ví dụ: do hết thời gian chờ hoặc lỗi 5xx). Các trình thu thập dữ liệu khác nhau có thể sử dụng chung một phản hồi đã lưu vào bộ nhớ đệm. Google có thể tăng hoặc giảm thời gian lưu trong bộ đệm dựa trên các tiêu đề HTTP max-age Cache-Control.

Định dạng tệp

Định dạng tệp dự kiến là văn bản thuần túy được mã hóa bằng UTF-8. Tệp này bao gồm các bản ghi (dòng) được phân tách bằng CR, CR/LF hoặc LF.

Google chỉ xem xét các bản ghi hợp lệ; tất cả các nội dung khác sẽ bị bỏ qua. Ví dụ: nếu tài liệu cuối cùng là trang HTML, thì Google sẽ chỉ xem xét các dòng văn bản hợp lệ và loại bỏ phần còn lại mà không đưa ra cảnh báo hoặc lỗi.

Nếu phương thức mã hóa ký tự được sử dụng dẫn đến các ký tự được sử dụng không thuộc UTF-8, thì điều này có thể dẫn đến việc phân tích cú pháp nội dung của tệp không chính xác.

Một BOM (byte order mark) Unicode tùy chọn ở đầu tệp robots.txt sẽ bị bỏ qua.

Mỗi bản ghi bao gồm một trường, một dấu hai chấm và một giá trị. Khoảng trắng là tùy chọn (nhưng nên dùng để cải thiện khả năng đọc). Có thể chèn nhận xét tại bất kỳ vị trí nào trong tệp bằng ký tự “#”; tất cả nội dung sau dấu bắt đầu này cho đến cuối bản ghi được coi là nhận xét và sẽ bị bỏ qua. Định dạng chung là <field>:<value><#optional-comment>. Khoảng trắng ở đầu và cuối bản ghi bị bỏ qua.

Phần tử <field> không phân biệt chữ hoa chữ thường. Phần tử <value> có thể phân biệt chữ hoa chữ thường, tùy thuộc vào phần tử <field>.

Cách xử lý các phần tử <field> có lỗi đơn giản/lỗi chính tả (ví dụ “useragent” thay vì “user-agent”) chưa được xác định. Do đó, một số tác nhân người dùng có thể diễn giải các phần tử này là lệnh chính xác.

Kích thước tệp tối đa có thể thực thi trên mỗi trình thu thập dữ liệu. Nội dung vượt quá kích thước tệp tối đa có thể bị bỏ qua. Google hiện áp dụng giới hạn kích thước là 500 kilobyte (KB).

Cú pháp/định nghĩa chính thức

Đây là mô tả giống như Backus-Naur Form (BNF), sử dụng các quy ước của RFC 822, ngoại trừ “|” dùng để chỉ định các lựa chọn thay thế. Các chữ được trích dẫn bằng “”, dấu ngoặc đơn “(” và “)” được sử dụng để nhóm các phần tử, các phần tử tùy chọn được đặt trong [ngoặc vuông], và trước các phần tử có thể có <n>* để chỉ định rằng phần tử theo sau có thể lặp lại n lần trở lên; n mặc định là 0.

robotstxt = *entries
entries = *( ( <1>*startgroupline
  *(groupmemberline | nongroupline | comment)
  | nongroupline
  | comment) )
startgroupline = [LWS] "user-agent" [LWS] ":" [LWS] agentvalue [comment] EOL
groupmemberline = [LWS] (
  pathmemberfield [LWS] ":" [LWS] pathvalue
  | othermemberfield [LWS] ":" [LWS] textvalue) [comment] EOL
nongroupline = [LWS] (
  urlnongroupfield [LWS] ":" [LWS] urlvalue
  | othernongroupfield [LWS] ":" [LWS] textvalue) [comment] EOL
comment = [LWS] "#" *anychar
agentvalue = textvalue

pathmemberfield = "disallow" | "allow"
othermemberfield = ()
urlnongroupfield = "sitemap"
othernongroupfield = ()

pathvalue = "/" path
urlvalue = absoluteURI
textvalue = *(valuechar | SP)
valuechar = <any UTF-8 character except ("#" CTL)>
anychar = <any UTF-8 character except CTL>
EOL = CR | LF | (CR LF)

Cú pháp cho “absoluteURI”, “CTL”, “CR”, “LF”, “LWS” được xác định trong RFC 1945. Cú pháp cho “path” được xác định trong RFC 1808.

Phân loại bản ghi

Các bản ghi được phân thành các loại khác nhau dựa trên loại phần tử <field>:

  • start-of-group (bắt đầu nhóm)
  • group-member (thuộc trong nhóm)
  • non-group (không thuộc nhóm)

Tất cả bản ghi group-member ở giữa một bản ghi start-of-group và bản ghi start-of-group tiếp theo được xem là một nhóm bản ghi. Phần tử trường start-of-group duy nhất của nhóm là user-agent. Các dòng start-of-group liên tiếp nhau sẽ nằm sau các bản ghi group-member sau dòng start-of-group cuối cùng. Mọi bản ghi group-member không nằm sau một bản ghi start-of-group đều bị bỏ qua. Mọi bản ghi non-group đều hợp lệ và không phụ thuộc vào bất kỳ nhóm nào.

Các phần tử <field> hợp lệ, sẽ được nêu chi tiết riêng trong tài liệu này, là:

  • user-agent (bắt đầu nhóm)
  • disallow (chỉ hợp lệ khi là một bản ghi group-member)
  • allow (chỉ hợp lệ khi là một bản ghi group-member)
  • sitemap (bản ghi non-group)

Tất cả các phần tử <field> khác đều có thể bị bỏ qua.

Phần tử start-of-group user-agent được sử dụng để xác định liệu nhóm này hợp lệ với trình thu thập dữ liệu này. Chỉ có một nhóm bản ghi hợp lệ cho một trình thu thập dữ liệu cụ thể. Chúng tôi sẽ đề cập đến thứ tự ưu tiên ở phần sau trong tài liệu này.

Các nhóm ví dụ:

user-agent: a
disallow: /c

user-agent: b
disallow: /d

user-agent: e
user-agent: f
disallow: /g

Có ba nhóm riêng biệt được xác định, một cho “a”, một cho “b” và một cho cả “e” và “f”. Mỗi nhóm có bản ghi group-member riêng. Xin lưu ý rằng có thể sử dụng khoảng trắng (một dòng trống) để cải thiện khả năng đọc.

Thứ tự ưu tiên cho tác nhân người dùng

Chỉ có một nhóm bản ghi group-member hợp lệ cho một trình thu thập dữ liệu cụ thể. Trình thu thập dữ liệu phải xác định nhóm bản ghi chính xác bằng cách tìm nhóm có tác nhân người dùng cụ thể nhất mà vẫn phù hợp. Tất cả các nhóm bản ghi khác đều bị trình thu thập dữ liệu bỏ qua. Tác nhân người dùng không phân biệt chữ hoa chữ thường. Tất cả văn bản không phù hợp đều bị bỏ qua (ví dụ: cả googlebot/1.2 và googlebot* đều tương đương với googlebot). Thứ tự của các nhóm trong tệp robots.txt là không quan trọng.

Ví dụ

Giả sử có một tệp robots.txt sau:

user-agent: googlebot-news
(group 1)

user-agent: *
(group 2)

user-agent: googlebot
(group 3)

Sau đây là cách các trình thu thập dữ liệu sẽ chọn nhóm thích hợp:

Nhóm bản ghi mà mỗi trình thu thập dữ liệu truy cập
Googlebot News Nhóm bản ghi được truy cập là nhóm 1. Googlebot News chỉ theo nhóm cụ thể nhất và bỏ qua mọi nhóm khác.
Googlebot (web) Nhóm bản ghi được truy cập là nhóm 3.
Googlebot Images Nhóm bản ghi được truy cập là nhóm 3. Không có nhóm googlebot-images cụ thể, vì vậy Googlebot Images sẽ theo nhóm chung chung hơn.
Googlebot News (khi thu thập dữ liệu hình ảnh) >Nhóm bản ghi được truy cập là nhóm 1. Những hình ảnh này do Googlebot News thu thập dữ liệu và do đó, chỉ có nhóm Googlebot News được truy cập.
Otherbot (web) Nhóm bản ghi được truy cập là nhóm 2.
Otherbot (News) Nhóm bản ghi được truy cập là nhóm 2. Ngay cả khi có một mục cho trình thu thập dữ liệu liên quan, mục đó chỉ hợp lệ nếu phù hợp.

Hãy xem cả phần trình thu thập dữ liệu của Google và chuỗi tác nhân người dùng.

Bản ghi group-member

Phần này chỉ đề cập đến các loại bản ghi group-member chung và riêng trên Google. Những loại bản ghi này cũng được gọi là “lệnh” đối với các trình thu thập dữ liệu. Các lệnh này được xác định dưới dạng directive: [path], trong đó [path] là tùy chọn. Theo mặc định, các trình thu thập dữ liệu được chỉ định sẽ không phải tuân theo hạn chế nào khi thu thập dữ liệu. Các lệnh không có [path] sẽ bị bỏ qua.

Giá trị [path], nếu được chỉ định, phải nằm ở vị trí tương đối tại thư mục gốc của trang web mà tệp robots.txt được tìm nạp (sử dụng cùng một giao thức, số cổng, tên máy chủ và tên miền). Giá trị đường dẫn phải bắt đầu bằng “/” để chỉ định thư mục gốc. Đường dẫn có phân biệt chữ hoa chữ thường. Bạn có thể tìm thêm thông tin trong phần “Tìm URL phù hợp dựa trên giá trị đường dẫn” bên dưới.

disallow

Lệnh disallow chỉ định các đường dẫn mà các trình thu thập dữ liệu đã chỉ định không được thu thập dữ liệu. Khi không có đường dẫn nào được chỉ định, lệnh sẽ bị bỏ qua.

Cách sử dụng:

disallow: [path]

allow

Lệnh allow chỉ định các đường dẫn mà các trình thu thập dữ liệu đã chỉ định có thể thu thập dữ liệu. Khi không có đường dẫn nào được chỉ định, lệnh sẽ bị bỏ qua.

Cách sử dụng:

allow: [path]

Tìm URL phù hợp dựa trên giá trị đường dẫn

Giá trị đường dẫn được sử dụng làm cơ sở để xác định liệu một quy tắc có áp dụng cho một URL cụ thể trên một trang web hay không. Ngoại trừ các ký tự đại diện, đường dẫn được sử dụng để khớp với phần đầu của một URL (và bất kỳ URL hợp lệ nào bắt đầu bằng cùng một đường dẫn). Các ký tự ASCII không phải 7 bit trong một đường dẫn có thể được bao gồm dưới dạng ký tự UTF-8 hoặc dưới dạng ký tự mã hóa UTF-8 được thoát dạng phần trăm theo RFC 3986.

Google, Bing, Yahoo và Ask hỗ trợ một dạng “ký tự đại diện” giới hạn cho các giá trị đường dẫn. Đó là:

  • * chỉ định 0 hoặc nhiều phiên bản khác của bất kỳ ký tự hợp lệ nào.
  • $ chỉ định phần cuối của URL.
Ví dụ về đường dẫn khớp
/ Khớp với thư mục gốc và mọi URL cấp thấp hơn
/* Tương đương với /. Ký tự đại diện sau đó bị bỏ qua.
/fish Kết quả khớp:

  • /fish
  • /fish.html
  • /fish/salmon.html
  • /fishheads
  • /fishheads/yummy.html
  • /fish.php?id=anything

Không khớp:

  • /Fish.asp
  • /catfish
  • /?id=fish
/fish* Tương đương với /fish. Ký tự đại diện sau đó bị bỏ qua.

Kết quả khớp:

  • /fish
  • /fish.html
  • /fish/salmon.html
  • /fishheads
  • /fishheads/yummy.html
  • /fish.php?id=anything

Không khớp:

  • /Fish.asp
  • /catfish
  • /?id=fish
/fish/ Dấu gạch chéo có nghĩa là mục này khớp với mọi đường dẫn nằm trong thư mục này.

Kết quả khớp:

  • /fish/
  • /fish/?id=anything
  • /fish/salmon.htm

Không khớp:

  • /fish
  • /fish.html
  • /Fish/Salmon.asp
/*.php Kết quả khớp:

  • /filename.php
  • /folder/filename.php
  • /folder/filename.php?parameters
  • /folder/any.php.file.html
  • /filename.php/

Không khớp:

  • / (ngay cả khi ánh xạ tới /index.php)
  • /windows.PHP
/*.php$ Kết quả khớp:

  • /filename.php
  • /folder/filename.php

Không khớp:

  • /filename.php?parameters
  • /filename.php/
  • /filename.php5
  • /windows.PHP
/fish*.php Kết quả khớp:

  • /fish.php
  • /fishheads/catfish.php?parameters

Không khớp: /Fish.PHP

Các bản ghi non-group-member mà Google hỗ trợ

sitemap

Được hỗ trợ bởi Google, Ask, Bing, Yahoo; được định nghĩa trên sitemaps.org.

Cách sử dụng:

sitemap: [absoluteURL]

[absoluteURL] trỏ đến tệp Sơ đồ trang web, Chỉ mục sơ đồ trang web hoặc URL tương đương. URL không phải nằm trong cùng một máy chủ với tệp robots.txt. Có thể tồn tại nhiều mục sitemap. Là các bản ghi non-group-member, các mục này không gắn liền với bất kỳ tác nhân người dùng cụ thể nào, và cho phép mọi trình thu thập dữ liệu truy cập, miễn là chúng không bị chặn.

Thứ tự ưu tiên cho các bản ghi group-member

Ở cấp độ group-member, đặc biệt là đối với lệnh allow và disallow, quy tắc cụ thể nhất dựa trên độ dài của mục [path] sẽ được áp dụng thay vì quy tắc ít cụ thể hơn (ngắn hơn). Thứ tự ưu tiên cho các quy tắc có ký tự đại diện chưa được xác định.

Trường hợp ví dụ
http://example.com/page allow/p

disallow/

Kết quảallow

http://example.com/folder/page allow/folder

disallow/folder

Kết quảallow

http://example.com/page.htm allow/page

disallow/*.htm

Kết quảundefined

http://example.com/ allow/$

disallow/

Kết quảallow

http://example.com/page.htm allow/$

disallow/

Kết quảdisallow

Nguồn: https://developers.google.com/search/reference/robots_txt

Nội Dung Liên Quan