Cách thích hợp để xử lý Cho phép và Không cho phép trong tệp robots.txt là gì?


8

Tôi chạy một trình thu thập dữ liệu Web quy mô khá lớn. Chúng tôi rất cố gắng để vận hành trình thu thập thông tin trong các tiêu chuẩn cộng đồng được chấp nhận và điều đó bao gồm việc tôn trọng robot.txt. Chúng tôi nhận được rất ít khiếu nại về trình thu thập thông tin, nhưng khi chúng tôi thực hiện phần lớn là về việc xử lý robot.txt của chúng tôi. Thông thường, Quản trị viên web đã mắc lỗi trong tệp robots.txt của mình và chúng tôi vui lòng chỉ ra lỗi. Nhưng định kỳ chúng tôi chạy vào các khu vực màu xám liên quan đến việc xử lý AllowDisallow.

Các robots.txt trang không bao gồm Allow. Tôi đã xem các trang khác, một số trang nói rằng trình thu thập thông tin sử dụng quy tắc "khớp đầu tiên" và các trang khác không chỉ định. Điều đó dẫn đến một số nhầm lẫn. Ví dụ: trang của Google về robot.txt được sử dụng để có ví dụ này:

User-agent: Googlebot
Disallow: /folder1/
Allow: /folder1/myfile.html

Rõ ràng, quy tắc "khớp đầu tiên" ở đây sẽ không hoạt động vì trình thu thập thông tin sẽ nhìn thấy Disallowvà biến mất, không bao giờ thu thập dữ liệu tệp được cho phép cụ thể.

Chúng tôi rõ ràng nếu chúng tôi bỏ qua tất cả các Allowdòng, nhưng sau đó chúng tôi có thể không thu thập thông tin một cái gì đó mà chúng tôi được phép thu thập dữ liệu. Chúng tôi sẽ bỏ lỡ mọi thứ.

Chúng tôi đã thành công lớn bằng cách kiểm tra Allowtrước, và sau đó kiểm tra Disallow, ý tưởng được Allowdự định sẽ cụ thể hơn Disallow. Đó là bởi vì, theo mặc định (nghĩa là không có hướng dẫn ngược lại), tất cả quyền truy cập đều được cho phép. Nhưng sau đó chúng tôi chạy qua một cái gì đó như thế này:

User-agent: *
Disallow: /norobots/
Allow: /

Ý định ở đây là rõ ràng, nhưng điều đó Allow: /sẽ khiến một bot kiểm tra Allowđầu tiên nghĩ rằng nó có thể thu thập dữ liệu bất cứ thứ gì trên trang web.

Thậm chí điều đó có thể được làm việc xung quanh trong trường hợp này. Chúng tôi có thể so sánh kết quả khớp Allowvới kết hợp Disallowvà xác định rằng chúng tôi không được phép thu thập dữ liệu bất kỳ thứ gì trong / norobots /. Nhưng điều đó bị phá vỡ khi đối mặt với các ký tự đại diện:

User-agent: *
Disallow: /norobots/
Allow: /*.html$

Câu hỏi đặt ra là bot có được phép bò /norobots/index.htmlkhông?

Các "phù hợp đầu tiên" quy tắc loại bỏ tất cả sự mơ hồ, nhưng tôi thường thấy các trang web hiển thị một cái gì đó giống như ví dụ Google cũ, đưa cụ thể hơn Allow sau khi các Disallow. Cú pháp đó đòi hỏi xử lý nhiều hơn bởi bot và dẫn đến sự mơ hồ không thể giải quyết.

Sau đó, câu hỏi của tôi là cách đúng đắn để làm mọi thứ? Quản trị viên web mong đợi gì từ một bot hoạt động tốt khi xử lý robot.txt?


Chỉ cần xử lý tất cả các lệnh theo thứ tự (từ trên xuống dưới) dường như sẽ loại bỏ tất cả sự mơ hồ (bao gồm cả việc xử lý các mẫu URL ký tự đại diện , chính thức là "không xác định"). Tuy nhiên, các bot công cụ tìm kiếm chính (Googlebot, Bingbot, v.v.) không hoạt động như vậy, vì vậy điều đó không khả thi.
MrWhite

Câu trả lời:


4

Một lưu ý rất quan trọng: Cho phép phát biểu nên đến trước khi các Disallow tuyên bố, bất kể như thế nào cụ thể báo cáo của bạn. Vì vậy, trong ví dụ thứ ba của bạn - không, các bot sẽ không thu thập dữ liệu /norobots/index.html.

Nói chung, theo quy tắc cá nhân, tôi đặt các câu lệnh cho phép trước và sau đó tôi liệt kê các trang và thư mục không được phép.


Vì vậy, bạn đang khuyên tôi nên tuân theo tiêu chuẩn "quy tắc kết hợp đầu tiên"? Đó là, bot đọc tệp robots.txt và lấy Cho phép hoặc Không cho phép đầu tiên khớp với url được đề cập?
Jim Mischel

1
Nhưng bạn có biết đó là cách giải thích được chấp nhận chung của robot.txt không? Đó là, nếu tôi thực hiện tiêu chuẩn "quy tắc kết hợp đầu tiên", đó có phải là điều mà hầu hết các Webmaster mong đợi không?
Jim Mischel

4
Mô tả về Cho phép trong bài viết Wikipedia trên robot.txt - en.wikipedia.org/wiki/Robots_exinating_stiteria# ALLow_directive - (và một số trang web khác) nói rằng "quy tắc khớp đầu tiên" là tiêu chuẩn. Vì đó là 100% rõ ràng và dễ thực hiện và chứng minh chính xác, đó là những gì tôi đã làm với.
Jim Mischel

1
Cảm ơn vì đã trả lời câu hỏi của riêng bạn :) Tôi không biết phải trả lời như thế nào. Tôi không biết về phương pháp thường được chấp nhận, tuy nhiên đó là cách tôi đã sử dụng nó kể từ khi tôi bắt đầu làm chuyên gia SEO và nó luôn hoạt động chính xác.
Vergil Penkov

1
Thứ tự các câu lệnh Cho phép và Không cho phép không có sự khác biệt nào đối với Googlebot mà xem xét tính cụ thể thay vào đó. Bing cũng vậy nhưng không biết về các công cụ tìm kiếm khác vì vậy nếu nghi ngờ, hãy cho phép trước tiên tôi đoán.
xương chậu

2

Đây là nhận của tôi về những gì tôi thấy trong ba ví dụ.

Ví dụ 1
Tôi sẽ bỏ qua toàn bộ /folder1/thư mục ngoại trừ các myfile.htmltập tin. Vì họ cho phép rõ ràng nên tôi cho rằng việc chặn toàn bộ thư mục đơn giản là dễ dàng hơn và rõ ràng cho phép một tệp trái ngược với việc liệt kê mọi tệp mà họ muốn chặn. Nếu thư mục đó chứa rất nhiều tệp và thư mục con thì tệp robot.txt có thể khó sử dụng nhanh.

Ví dụ 2
Tôi cho rằng /norobots/thư mục đã vượt quá giới hạn và mọi thứ khác đều có sẵn để được thu thập thông tin. Tôi đọc cái này là "thu thập dữ liệu mọi thứ trừ thư mục / norobots /".

Ví dụ 3
Tương tự như ví dụ 2, tôi cho rằng /norobots/thư mục bị giới hạn và tất cả .htmlcác tệp không có trong thư mục đó đều có sẵn để được thu thập thông tin. Tôi đọc cái này là "thu thập dữ liệu tất cả các tệp .html nhưng không thu thập bất kỳ nội dung nào trong thư mục / norobots /".

Hy vọng tác nhân người dùng bot của bạn chứa URL nơi họ có thể tìm hiểu thêm thông tin về thói quen thu thập dữ liệu của bạn và đưa ra yêu cầu xóa hoặc cung cấp cho bạn phản hồi về cách họ muốn robot.txt diễn giải.


1
Câu trả lời của bạn có thể phù hợp với ý định, ngoại trừ câu cuối cùng, mà tôi thấy hơi nghi ngờ. Trong những trường hợp cụ thể đó, tôi có thể mã hóa các robot xử lý chính xác, nhưng có những trường hợp mơ hồ khác không dễ xác định. Hơn nữa, tôi đang tìm kiếm một giải pháp chung. Và, vâng, chuỗi tác nhân người dùng của chúng tôi có một liên kết đến trang Câu hỏi thường gặp của chúng tôi. Và mặc dù chúng tôi có thể mô tả cách chúng tôi xử lý robot.txt, nhưng sẽ tốt nhất cho tất cả những người quan tâm nếu chúng tôi không phải làm vậy. Đó là, nếu mọi người xử lý mọi thứ theo cùng một cách. Nhưng đó không phải là trường hợp.
Jim Mischel

Trên đây là cách Googlebot xử lý các ví dụ của bạn như có thể được kiểm tra trên công cụ kiểm tra robot.txt của họ (Công cụ quản trị trang web> URL bị chặn). Google không quan tâm đến việc bạn đặt Cho phép hay Không cho phép trước nhưng có thuật toán xác định tính đặc hiệu, dẫn đến một số kết quả không rõ ràng. Ví dụ: nếu bạn thay thế '/*.html$' bằng '/*myfile.html$' trong ví dụ thứ 3, thì 'myfile.html' được phép thay vì bị chặn HOẶC nếu bạn mất dấu '/' từ ' Các tập tin / norobots / ', .html cũng được cho phép.
xương chậu

Aha! Theo Wikipedia, Google chỉ nhìn vào số lượng ký tự để xác định lệnh nào sẽ được sử dụng và trong trường hợp 'vẽ' đi với 'Cho phép'.
xương chậu
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.