Cách Google diễn giải quy cách của tệp robots.txt
Trình thu thập dữ liệu tự động của Google hỗ trợ Giao thức loại trừ cho robot (Robots Exclusion Protocol hay REP). Điều này có nghĩa là trước khi thu thập dữ liệu một trang web, trình thu thập dữ liệu của Google sẽ tải xuống và phân tích cú pháp tệp robots.txt của trang web đó để trích xuất thông tin về những phần có thể thu thập dữ liệu trên trang web. REP không áp dụng cho các trình thu thập dữ liệu của Google do người dùng kiểm soát (ví dụ: đăng ký nhận thông tin qua nguồn cấp dữ liệu) hoặc các trình thu thập dữ liệu được dùng để tăng cường mức độ an toàn cho người dùng (ví dụ: phân tích phần mềm độc hại).
Trang này mô tả cách Google diễn giải REP. Để nắm được tiêu chuẩn ban đầu, hãy tham khảo RFC 9309.
Tệp robots.txt là gì?
Nếu không muốn trình thu thập dữ liệu truy cập một số phần trên trang web của mình, bạn có thể tạo một tệp robots.txt có các quy tắc phù hợp. Tệp robots.txt là một tệp văn bản đơn giản chứa các quy tắc về việc trình thu thập dữ liệu nào có thể truy cập vào những phần nào của trang web. Chẳng hạn, tệp robots.txt cho trang example.com có thể có dạng như sau:
# This robots.txt file controls crawling of URLs under https://example.com. # All crawlers are disallowed to crawl files in the "includes" directory, such # as .css, .js, but Google needs them for rendering, so Googlebot is allowed # to crawl them. User-agent: * Disallow: /includes/ User-agent: Googlebot Allow: /includes/ Sitemap: https://example.com/sitemap.xml
Nếu bạn mới làm quen với tệp robots.txt, hãy bắt đầu từ bài viết giới thiệu về robots.txt của chúng tôi. Bạn cũng có thể xem các mẹo để tạo tệp robots.txt và danh sách tổng hợp câu hỏi thường gặp và câu trả lời.
Vị trí của tệp và phạm vi hiệu lực
Bạn phải đặt tệp robots.txt trong thư mục cấp cao nhất của một trang web và qua một giao thức được hỗ trợ. Cũng giống như các URL khác, URL cho tệp robots.txt có phân biệt chữ hoa chữ thường. Đối với Google Tìm kiếm, giao thức được hỗ trợ là HTTP, HTTPS và FTP. Trên HTTP và HTTPS, các trình thu thập dữ liệu tìm nạp tệp robots.txt thông qua một yêu cầu HTTP GET
không có điều kiện. Trên FTP, các trình thu thập dữ liệu dùng một lệnh RETR (RETRIEVE)
chuẩn bằng thông tin đăng nhập ẩn danh.
Các quy tắc liệt kê trong tệp robots.txt chỉ áp dụng cho máy chủ, giao thức và số cổng nơi lưu trữ tệp robots.txt.
Ví dụ về URL tệp robots.txt hợp lệ
Bảng sau đây đưa ra ví dụ về các URL của tệp robots.txt và những đường dẫn URL hợp lệ tương ứng. Cột 1 chứa URL của tệp robots.txt và cột 2 chứa những miền mà tệp robots.txt sẽ áp dụng và không áp dụng.
Ví dụ về URL robots.txt | |
---|---|
https://example.com/robots.txt |
Đây là trường hợp chung. Tệp này không có hiệu lực với các miền con, giao thức hoặc số cổng khác. Tuy nhiên, tệp này sẽ có hiệu lực với mọi tệp trong mọi thư mục con trên cùng một máy chủ, giao thức và số cổng. Có hiệu lực với:
|
https://www.example.com/robots.txt |
Một tệp robots.txt trên một tên miền phụ chỉ áp dụng với tên miền phụ đó. Có hiệu lực với:
Không có hiệu lực với:
|
https://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 không kiểm tra các tệp robots.txt trong thư mục con. |
https://www.exämple.com/robots.txt |
IDN tương đương với các phiên bản Punycode của chúng. Xem thêm về RFC 3492. Có hiệu lực với:
Không có hiệu lực với:
|
ftp://example.com/robots.txt |
Có hiệu lực với:
Không có hiệu lực với:
|
https://212.96.82.21/robots.txt |
Tệp robots.txt có địa chỉ IP dưới dạng tên máy chủ sẽ chỉ có hiệu lực khi thu thập dữ liệu địa chỉ IP đó dưới dạng tên máy chủ. Tệp này sẽ không tự động có hiệu lực với mọi trang web được lưu trữ trên địa chỉ IP đó (mặc dù có thể tệp robots.txt được dùng chung cho các trang này, và trong trường hợp đó thì tệp cũng sẽ có dưới tên máy chủ dùng chung). Có hiệu lực với:
Không có hiệu lực với:
|
https://example.com:443/robots.txt |
Số cổng tiêu chuẩn ( Có hiệu lực với:
Không có hiệu lực với:
|
https://example.com:8181/robots.txt |
Các tệp robots.txt trên những số cổng không chuẩn chỉ có hiệu lực với nội dung được cung cấp thông qua những số cổng đó. Có hiệu lực với:
Không có hiệu lực với:
|
Xử lý lỗi và mã trạng thái HTTP
Khi yêu cầu một tệp robots.txt, mã trạng thái HTTP trong phản hồi của máy chủ sẽ ảnh hưởng đến cách trình thu thập dữ liệu của Google sử dụng tệp robots.txt. Bảng sau đây tóm tắt cách Googlebot xử lý các tệp robots.txt cho nhiều mã trạng thái HTTP.
Xử lý lỗi và mã trạng thái HTTP | |
---|---|
2xx (success) |
Mã trạng thái HTTP báo hiệu thành công để nhắc trình thu thập dữ liệu của Google xử lý tệp robots.txt theo thông tin mà máy chủ cung cấp. |
3xx (redirection) |
Google đi theo ít nhất 5 bước chuyển hướng như đã xác định trong RFC 1945, sau đó dừng lại và coi đó là một lỗi Google không đi theo các lệnh chuyển hướng logic trong các tệp robots.txt (chuyển hướng loại khung, JavaScript hoặc meta refresh). |
4xx (client errors) |
Trình thu thập dữ liệu của Google sẽ xử lý tất cả các lỗi |
5xx (server errors) |
Vì máy chủ không thể đưa ra phản hồi chắc chắn cho yêu cầu cung cấp tệp robots.txt của Google, nên Google tạm thời diễn giải các lỗi máy chủ Nếu cần tạm ngưng quá trình thu thập dữ liệu, bạn nên phân phát mã trạng thái HTTP
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 dẫn đến việc trả về mã trạng thái |
Những lỗi khác | Google coi một tệp robots.txt không thể tìm nạp do các sự cố liên quan đến DNS hoặc kết nối mạng (như hết thời gian chờ, phản hồi không hợp lệ, kết nối bị đặt lại/bị gián đoạn, lỗi khi nhóm dữ liệu HTTP) là lỗi máy chủ. |
Lưu vào bộ nhớ đệm
Google thường lưu nội dung của tệp robots.txt vào bộ nhớ đệm tối đa 24 giờ. Tuy nhiên, thời gian này có thể dài hơn trong những trường hợp không thể làm mới phiên bản lưu vào bộ nhớ đệm (chẳng hạn như 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 vào bộ nhớ đệm dựa trên các tiêu đề HTTP max-age Cache-Control.
Định dạng tệp
Tệp robots.txt phải là tệp văn bản thuần tuý được mã hoá UTF-8, đồng thời các dòng phải được phân tách bằng CR
, CR/LF
hoặc LF
.
Google bỏ qua các dòng không hợp lệ trong tệp robots.txt, trong đó có Dấu thứ tự byte (Byte Order Mark) (BOM) Unicode ở đầu tệp robots.txt, và chỉ sử dụng các dòng hợp lệ. Ví dụ: nếu nội dung tải xuống là HTML thay vì quy tắc trong tệp robots.txt, Google sẽ cố gắng phân tích cú pháp của nội dung, trích xuất quy tắc và bỏ qua mọi nội dung khác.
Tương tự, nếu chế độ mã hoá ký tự của tệp robots.txt không phải là UTF-8, thì Google có thể bỏ qua các ký tự không thuộc phạm vi của UTF-8, và điều đó có thể khiến các quy tắc của tệp robots.txt trở thành không hợp lệ.
Hiện tại, Google áp dụng giới hạn kích thước tệp robots.txt là 500 kibibyte (KiB). Phần nội dung nằm ngoài kích thước tệp tối đa sẽ bị bỏ qua. Bạn có thể giảm kích thước của tệp robots.txt bằng cách hợp nhất những quy tắc sẽ làm cho tệp bị quá kích thước. Ví dụ: đặt nội dung bị loại trừ trong một thư mục riêng.
Cú pháp
Các dòng hợp lệ trong tệp robots.txt phải bao gồm một trường, một dấu hai chấm và một giá trị. Dấu cách là không bắt buộc (nhưng nên dùng để cải thiện tính dễ đọc). Hệ thống sẽ bỏ qua khoảng trắng ở đầu và cuối dòng. Để đưa các nhận xét vào tệp, hãy thêm ký tự #
vào trước nhận xét của bạn. Xin lưu ý rằng mọi ký tự sau ký tự #
sẽ bị bỏ qua. Định dạng chung là <field>:<value><#optional-comment>
.
Google hỗ trợ những trường sau:
user-agent
: xác định trình thu thập dữ liệu thuộc phạm vi áp dụng của quy tắc này.allow
: một đường dẫn URL được phép thu thập dữ liệu.disallow
: một đường dẫn URL không được phép thu thập dữ liệu.sitemap
: URL đầy đủ của một sơ đồ trang web.
Các trường allow
và disallow
cũng được gọi là các quy tắc (còn gọi là lệnh). Những quy tắc này luôn được xác định dưới dạng rule: [path]
, trong đó [path]
là không bắt buộc. 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 quy tắc hạn chế nào khi thu thập dữ liệu. Trình thu thập dữ liệu sẽ bỏ qua các quy tắc không có [path]
.
Giá trị [path]
(nếu được chỉ định) phải nằm ở vị trí tương đối so với thư mục gốc của trang web mà từ đó 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 thời giá trị này có phân biệt chữ hoa chữ thường. Tìm hiểu thêm về cách tìm URL phù hợp dựa trên giá trị đường dẫn.
user-agent
Dòng user-agent
xác định trình thu thập dữ liệu thuộc phạm vi áp dụng của quy tắc này. Hãy xem bài viết trợ giúp về Trình thu thập dữ liệu và chuỗi tác nhân người dùng của Google để nắm được danh sách đầy đủ các chuỗi tác nhân người dùng mà bạn có thể dùng trong tệp robots.txt.
Giá trị của dòng user-agent
không phân biệt chữ hoa chữ thường.
disallow
Quy tắc disallow
chỉ định các đường dẫn nơi các trình thu thập dữ liệu không được thu thập dữ liệu (như xác định tại dòng user-agent
mà quy tắc disallow
được nhóm cùng).
Trình thu thập dữ liệu bỏ qua quy tắc không có đường dẫn.
Google không thể lập chỉ mục nội dung của các trang không cho phép thu thập dữ liệu, nhưng vẫn có thể lập chỉ mục URL và cho thấy URL đó trong kết quả tìm kiếm nhưng không có đoạn trích. Tìm hiểu cách chặn hoạt động lập chỉ mục.
Giá trị của quy tắc disallow
có phân biệt chữ hoa chữ thường.
Cách sử dụng:
disallow: [path]
allow
Quy tắc allow
chỉ định những đườ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, quy tắc này sẽ bị bỏ qua.
Giá trị của quy tắc allow
có phân biệt chữ hoa chữ thường.
Cách sử dụng:
allow: [path]
sitemap
Google, Bing, Yahoo và các công cụ tìm kiếm phổ biến khác hỗ trợ trường sitemap
trong tệp robots.txt, theo định nghĩa trên sitemaps.org.
Giá trị của trường sitemap
có phân biệt chữ hoa chữ thường.
Cách sử dụng:
sitemap: [absoluteURL]
Dòng [absoluteURL]
trỏ đến vị trí của sơ đồ trang web hoặc tệp chỉ mục sơ đồ trang web.
Đó phải là một URL đủ điều kiện (bao gồm cả giao thức và máy chủ) và không cần phải mã hoá URL. URL không bắt buộc phải nằm trên cùng một máy chủ với tệp robots.txt. Bạn có thể chỉ định nhiều trường sitemap
. Trường sơ đồ trang web không gắn với tác nhân người dùng cụ thể nào. Đồng thời, mọi trình thu thập dữ liệu đều có thể tuân theo những trường này, miễn là không bị từ chối.
Ví dụ:
user-agent: otherbot disallow: /kale sitemap: https://example.com/sitemap.xml sitemap: https://cdn.example.org/other-sitemap.xml sitemap: https://ja.example.org/テスト-サイトマップ.xml
Nhóm các dòng và quy tắc
Bạn có thể nhóm các quy tắc áp dụng cho nhiều tác nhân người dùng bằng cách lặp lại dòng user-agent
cho từng trình thu thập dữ liệu.
Ví dụ:
user-agent: a disallow: /c user-agent: b disallow: /d user-agent: e user-agent: f disallow: /g user-agent: h
Trong ví dụ này, có bốn nhóm quy tắc riêng biệt:
- Một nhóm cho tác nhân người dùng "a".
- Một nhóm cho tác nhân người dùng "b".
- Một nhóm cho cả tác nhân người dùng "e" và "f".
- Một nhóm cho tác nhân người dùng "h".
Đối với nội dung mô tả kỹ thuật của một nhóm, hãy xem phần 2.1 của nội dung Giao thức loại trừ cho robot.
Thứ tự ưu tiên đối với tác nhân người dùng
Chỉ có một nhóm hợp lệ duy nhất đối với mỗi trình thu thập dữ liệu cụ thể. Trình thu thập dữ liệu của Google xác định đúng nhóm quy tắc bằng cách tìm trong tệp robots.txt nhóm có tác nhân người dùng cụ thể nhất phù hợp với tác nhân người dùng của trình thu thập dữ liệu của Google. Các nhóm khác sẽ bị bỏ qua. Tất cả văn bản không khớ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.
Nếu bạn khai báo nhiều nhóm cụ thể cho một tác nhân người dùng, thì tất cả quy tắc trong các nhóm áp dụng cho tác nhân người dùng đó sẽ được kết hợp nội bộ thành một nhóm duy nhất. Nhóm theo tác nhân người dùng cụ thể và nhóm chung (*
) không kết hợp với nhau.
Ví dụ
Khớp với trường user-agent
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 mà mỗi trình thu thập dữ liệu tuân theo | |
---|---|
Googlebot News |
googlebot-news tuân theo nhóm 1, vì nhóm 1 là nhóm cụ thể nhất.
|
Googlebot (web) | googlebot tuân theo nhóm 3. |
Googlebot StoreBot |
Storebot-Google tuân theo nhóm 2, vì không có nhóm Storebot-Google cụ thể.
|
Googlebot News (khi thu thập dữ liệu hình ảnh) |
Khi thu thập dữ liệu hình ảnh, googlebot-news tuân theo nhóm 1.
googlebot-news chỉ tuân theo nhóm 1 do không thu thập dữ liệu hình ảnh cho Google Hình ảnh.
|
Otherbot (web) | Các trình thu thập dữ liệu khác của Google tuân theo nhóm 2. |
Otherbot (tin tức) |
Các trình thu thập dữ liệu khác của Google có chức năng thu thập dữ liệu đối với nội dung tin tức, nhưng không được xác định là googlebot-news tuân theo 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ỉ có hiệu lực nếu phù hợp.
|
Nhóm quy tắc
Nếu có nhiều nhóm trong một tệp robots.txt có liên quan đến một tác nhân người dùng cụ thể, thì các trình thu thập dữ liệu của Google sẽ hợp nhất các nhóm đó trong nội bộ. Ví dụ:
user-agent: googlebot-news disallow: /fish user-agent: * disallow: /carrots user-agent: googlebot-news disallow: /shrimp
Trình thu thập dữ liệu nhóm các quy tắc lại với nhau trong nội bộ dựa trên tác nhân người dùng, ví dụ:
user-agent: googlebot-news disallow: /fish disallow: /shrimp user-agent: * disallow: /carrots
Trình phân tích cú pháp robots.txt bỏ qua các quy tắc khác ngoài allow
, disallow
và user-agent
. Như vậy tức là đoạn mã sau đây trong tệp robots.txt được coi là một nhóm, và do đó quy tắc disallow: /
tác động đến cả user-agent
a
và b
:
user-agent: a sitemap: https://example.com/sitemap.xml user-agent: b disallow: /
Khi xử lý các quy tắc trong tệp robots.txt, trình thu thập dữ liệu sẽ bỏ qua dòng sitemap
.
Ví dụ: các trình thu thập dữ liệu hiểu đoạn mã trước đó trong tệp robots.txt như sau:
user-agent: a user-agent: b disallow: /
Tìm URL phù hợp dựa trên giá trị đường dẫn
Google sử dụng giá trị đường dẫn trong các quy tắc allow
và disallow
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. Quy trình này hoạt động bằng cách so sánh quy tắc đó với thành phần đường dẫn của URL mà trình thu thập dữ liệu đang cố gắng tìm nạp.
Các ký tự ASCII không phải 7 bit trong một đường dẫn có thể được sử dụng dưới dạng ký tự UTF-8 hoặc ký tự UTF-8 mã hoá bằng ký tự thoát dạng phần trăm theo RFC 3986.
Google, Bing và các công cụ tìm kiếm phổ biến khác hỗ trợ một dạng ký tự đại diện có giới hạn cho các giá trị đường dẫn. Các ký tự đại diện này bao gồm:
*
chỉ định 0 hoặc trường hợp khác của một ký tự hợp lệ bất kỳ.$
chỉ định điểm cuối của URL.
Bảng sau đây cho thấy mức độ ảnh hưởng của các loại ký tự đại diện đối với việc phân tích cú pháp:
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 đứng sau bị bỏ qua. |
/$ |
Chỉ khớp với thư mục gốc. Mọi URL cấp thấp hơn đều được phép thu thập dữ liệu. |
/fish |
Khớp với mọi đường dẫn bắt đầu bằng Khớp:
Không khớp:
|
/fish* |
Tương đương với Khớp:
Không khớp:
|
/fish/ |
Khớp với mọi mục trong thư mục Khớp:
Không khớp:
|
/*.php |
Khớp với mọi đường dẫn chứa Khớp:
Không khớp:
|
/*.php$ |
Khớp với mọi đường dẫn kết thúc bằng Khớp:
Không khớp:
|
/fish*.php |
Khớp với mọi đường dẫn chứa Khớp:
Không khớp:
|
Thứ tự ưu tiên đối với quy tắc
Khi khớp quy tắc trong tệp robots.txt với URL, các trình thu thập dữ liệu sử dụng quy tắc cụ thể nhất dựa trên độ dài của đường dẫn quy tắc. Trong trường hợp các quy tắc mâu thuẫn với nhau (bao gồm cả các quy tắc có ký tự đại diện), Google sẽ sử dụng quy tắc có mức hạn chế thấp nhất.
Ví dụ sau đây minh hoạ quy tắc mà trình thu thập dữ liệu của Google sẽ áp dụng cho một URL cụ thể.
Trường hợp ví dụ | |
---|---|
https://example.com/page |
allow: /p disallow: /
Quy tắc áp dụng: |
https://example.com/folder/page |
allow: /folder disallow: /folder
Quy tắc áp dụng: |
https://example.com/page.htm |
allow: /page disallow: /*.htm
Quy tắc áp dụng: |
https://example.com/page.php5 |
allow: /page disallow: /*.ph
Quy tắc áp dụng: |
https://example.com/ |
allow: /$ disallow: /
Quy tắc áp dụng: |
https://example.com/page.htm |
allow: /$ disallow: /
Quy tắc áp dụng: |