web-dev-qa-db-ja.com

DisallowおよびAllowディレクティブのみを含むRobots.txtは、許可されていないリソースのクロールを防止しません

robots.txtファイルがあります:

User-agent:*
Disallow:/path/page
Disallow:/path/
Allow:/

許可されていないパスはまだクロールされています。

私はこの問題と彼らが言ったことを検索しました、グーグルでの優先順位は重要ではありません。技術的には、許可されていない人でも機能するはずですが、それはAllow:/がそれをオーバーライドしているためかどうか疑問に思っていますか?

5
arthur

Googleのrobots.txtテスター にページを通すと、2つの問題が明らかになります。

  1. User-agent行がないため、ルールはanyクローラーに適用されません: enter image description here
  2. User-agent行を入力すると、Allow行が禁止をオーバーライドします。 enter image description here

正しいrobots.txtファイルは次のとおりです。

User-agent: *
Disallow: /path/page
Disallow: /path/

DO NOTAllow:を使用します。クロールを許可することがデフォルトです。クロールしたくないしないアイテムのみを含める必要があります。

User-Agent:行を含めて、すべてのクローラーに適用されることを指定します。それ以外の場合は、noneに適用されます。

コロンの後にスペースがあることは実際には重要ではないと思いますが、私が見るすべての例にはスペースがあります。

また、robots.txtはそれに従うことを選択したクローラー専用です。 Googlebotのような検索エンジンスパイダーはrobots.txtに従う必要がありますが、他のすべてのスパイダーがそうするわけではありません。

5

既に述べたように、このインスタンスのAllow:ディレクティブは不要です。デフォルトのアクションはすべてのクロールを許可することであるため、Allow: /(つまり、すべて許可)を明示的に指定することは完全に冗長です。

ただし、提案されていることとは反対に、Allow: /ディレクティブは問題を引き起こしません。 Allow: /ディレクティブは、見かけ上のorderに関係なく、最も限定的ではないため、他のDisallow:ディレクティブを「オーバーライド」しません。

googleの優先順位は関係ありません。

はい、そうですね。あなたは「指令の順序は重要ではない」という意味です。常に優先順位があります(「ワイルドカード」を使用している場合を除き、その場合は正式に「未定義」です)。これが、Allow: /ディレクティブがその上の固有のDisallow:ディレクティブをオーバーライドしない理由です。 Googleは優先順位を定義します

許可および禁止ディレクティブの場合、[path]エントリの長さに基づいた最も具体的なルールは、より具体的ではない(短い)ルールよりも優先されます

そして、これは Googleのrobots.txtテスター を使用して確認できます。 /path/page

Google's robot.txt Tester - Disallow

これは、少なくともGooglebotとBingbotの動作です(最も具体的なパスが優先されます)。ただし、一部の(古い)ボットは「最初の一致」ルールを使用すると報告されています。そのため、最大限の互換性を確保するために、最初にAllow:ディレクティブを含めることをお勧めします。参照: robots.txtで許可と禁止を処理する適切な方法は何ですか?

また、robots.txtはprefix matchingであるため、Disallow: /path/pageDisallow: /path/をブロックするため、/path/pageディレクティブも不要です。したがって、要約すると、あなたのrobots.txtファイルのみneeds1つのDisallowディレクティブが必要です。他のディレクティブは単に不要ですが、実際には害はありません:

User-agent: *
Disallow: /path/

pathの前の空白は完全にオプションですが、Stephenの回答で述べたように、それを見るのがはるかに一般的であり、間違いなく読みやすくなります。

Allow:ディレクティブをneedするのは、例外を作成し、Disallow:ディレクティブによってブロックされるURLを許可する必要がある場合だけです。 。例えば。上記の/path/fooファイルでrobots.txtを許可する場合は、グループのどこかにAllow: /path/fooディレクティブsomewhereを明示的に含める必要があります。

許可されていないパスはまだクロールされています。

それでも問題が解決しない場合は、他に何かが起こっています...

  • robots.txtファイルに他のディレクティブがありますか。 Googleのrobot.txtテスターでURLをテストします。
  • 現在のrobots.txtファイルはいつ実装されましたか? Googleは毎日robots.txtファイルへの変更のみをピックアップします。 GSCでは、Googlebotが現在使用しているバージョンを特定できます。
  • スティーブンが既に指摘したように、robots.txtは「良いボット」によってのみ尊重されます。多くの(悪い)ボットは単にそれを無視し、URLをクロールします。アクセスログで、「良い」ボットがこれらの許可されていないURLをまだクロールしているかどうかを確認できます。
2
MrWhite

あなたがどのようなサイトを持っているかは、あなたの質問から明らかではありません。 SPAの場合は、発生している問題を説明します。 robots.txtはSPAを効果的に処理していないようで、他のソリューションを探す必要があります。

0
Jeffrey Levy