20

以下は、ユーザー エージェントごとに複数のクロール遅延を伴う複数のユーザー エージェントを許可するためのrobots.txtファイルのサンプルです。Crawl-delay の値は説明用であり、実際の robots.txt ファイルでは異なります。

適切な回答を求めてウェブ全体を検索しましたが、見つかりませんでした。提案が混在していて、どれが正しい/適切な方法なのかわかりません。

質問:

(1) 各ユーザー エージェントに独自のクロール遅延を設定できますか? (私はそう仮定します)

(2) 各ユーザー エージェントのクロール遅延ラインは、許可/拒否ラインの前後のどこに配置しますか?

(3) 各ユーザー エージェント グループの間に空白のようなものが必要ですか。

参考文献:

http://www.seopt.com/2013/01/robots-text-file/

http://help.yandex.com/webmaster/?id=1113851#1113858

基本的に、以下のサンプルの値を使用して、最終的な robots.txt ファイルがどのように見えるかを調べています。

前もって感謝します。

# Allow only major search spiders    
User-agent: Mediapartners-Google
Disallow:
Crawl-delay: 11

User-agent: Googlebot
Disallow:
Crawl-delay: 12

User-agent: Adsbot-Google
Disallow:
Crawl-delay: 13

User-agent: Googlebot-Image
Disallow:
Crawl-delay: 14

User-agent: Googlebot-Mobile
Disallow:
Crawl-delay: 15

User-agent: MSNBot
Disallow:
Crawl-delay: 16

User-agent: bingbot
Disallow:
Crawl-delay: 17

User-agent: Slurp
Disallow:
Crawl-delay: 18

User-agent: Yahoo! Slurp
Disallow:
Crawl-delay: 19

# Block all other spiders
User-agent: *
Disallow: /

# Block Directories for all spiders
User-agent: *
Disallow: /ads/
Disallow: /cgi-bin/
Disallow: /scripts/

(4) すべてのユーザー エージェントのクロール遅延を 10 秒に設定したい場合、次は正しいでしょうか?

# Allow only major search spiders
User-agent: *
Crawl-delay: 10

User-agent: Mediapartners-Google
Disallow:

User-agent: Googlebot
Disallow:

User-agent: Adsbot-Google
Disallow:

User-agent: Googlebot-Image
Disallow:

User-agent: Googlebot-Mobile
Disallow:

User-agent: MSNBot
Disallow:

User-agent: bingbot
Disallow:

User-agent: Slurp
Disallow:

User-agent: Yahoo! Slurp
Disallow:

# Block all other spiders
User-agent: *
Disallow: /

# Block Directories for all spiders
User-agent: *
Disallow: /ads/
Disallow: /cgi-bin/
Disallow: /scripts/
4

1 に答える 1

26

(1) 各ユーザー エージェントに独自のクロール遅延を設定できますか?

はい。1 行以上で始まる各レコードUser-agentには、行を含めることができますCrawl-delay元の robots.txt 仕様Crawl-delayの一部ではないことに注意してください。しかし、仕様で定義されているように、それを理解するパーサーにそれらを含めることは問題ありません:

認識されないヘッダーは無視されます。

そのため、古い robots.txt パーサーは単にあなたのCrawl-delay行を無視します。


(2) 各ユーザー エージェントのクロール遅延ラインは、許可/拒否ラインの前後のどこに配置しますか?

関係ない。


(3) 各ユーザー エージェント グループの間に空白のようなものが必要ですか。

はい。レコードは、1 つまたは複数の改行で区切る必要があります。元の仕様を参照してください:

ファイルは、1 つまたは複数の空白行 (CR、CR/NL、または NL で終了) で区切られた 1 つまたは複数のレコードで構成されます。


(4) すべてのユーザー エージェントのクロール遅延を 10 秒に設定したい場合、次は正しいでしょうか?

いいえ。ボットはユーザー エージェントに一致するレコードを探します。レコードが見つからない場合にのみ、そのUser-agent: *レコードを使用します。したがって、あなたの例では、リストされているすべてのボット ( Googlebot、など)MSNBot.Yahoo! Slurp Crawl-delay


また、次のように複数のレコードをUser-agent: *持つことはできないことに注意してください。

値が「*」の場合、レコードは、他のどのレコードとも一致しなかったロボットのデフォルト アクセス ポリシーを記述します。「/robots.txt」ファイルにそのようなレコードを複数含めることはできません。

そのため、パーサーは (他に一致するレコードがない場合) 最初のレコードを検索し、次のレコードをUser-agent: *無視する可能性があります。/ads/最初の例では、/cgi-bin/で始まる URLがブロックされ/scripts/ていないことを意味します。

とのレコードが1 つしかない場合でもUser-agent: *、それらのDisallow行は、他に一致するレコードがないボット専用です! コメントが示唆するように、すべての# Block Directories for all spidersスパイダーに対してこれらの URL パスをブロックする必要があるため、レコードごとに行を繰り返す必要があります。Disallow

于 2013-07-14T10:00:32.477 に答える