web-dev-qa-db-ja.com

robots.txtでHTTPSのみのクロールを禁止する方法はありますか?

Bingbotがhttpsで会社のWebサイトのページをクロールしていることに気付きました。 Bingは既にhttpを介してサイトをクロールしているため、これは取るに足らないように思えます。 httpsのみにDisallow: /を指定する方法はありますか?

Wikipedia によると、各プロトコルには独自のrobots.txtがあります

GoogleのRobots.txt仕様 によると、robots.txthttp AND httpsに適用されます

httpsのすぐ上のDisallow: /をBingに完全にしたくない。

6
David Wilkins

robots.txt自体でHTTP経由で提供する方法はありません。

安全なHTTPS接続のために、異なるロボットファイルを完全に提供できます。 。htaccessファイルで書き換えルールを使用して行う方法の1つを次に示します。

RewriteEngine On
RewriteCond %{HTTPS} =on
RewriteRule ^robots.txt$ robots-deny-all.txt [L]

robots-deny-all.txtの内容は次のとおりです。

User-agent: *
Disallow: /
13

robots.txtを操作する前に、ページで canonical link elements が定義されていることを確認してください。

Webクローラーは以下を処理する必要があります。

<link rel="canonical" href="…" />

2つのページが同じコンテンツを持っていると見なされるべきであり、URLの1つがコンテンツの優先アドレスであるという非常に強力なヒントとして。

RFC 6596 セクション3:

ターゲット(標準)IRIは:

  • 「http」から「https」など、異なるスキーム名があります…

正規のリンクヒントを使用すると、適度にインテリジェントなWebクローラーは、HTTPSを介してサイトを再度クロールすることを回避できます。

4
200_success

。htaccessファイルを追加してHTTPSをHTTPにリダイレクトし、robots.txtファイルのリクエストをHTTPSクロールを拒否するファイルにリダイレクトします。

# Redirect HTTPS to HTTP
RewriteCond %{HTTP:X-Forwarded-Proto} =https
RewriteRule ^(.*)$ http://%{HTTP_Host}%{REQUEST_URI} [L,R=301]

RewriteCond %{SERVER_PORT} ^443$
RewriteRule ^robots.txt$ robots_https.txt

次に、これを含むrobots_https.txtを追加します。

User-agent: *
Disallow: /
1
Linh Le

HTTPSリクエスト用に別のrobots.txtを作成します。たとえば、robots_https.txtを作成し、Webサイトのルートに配置します。

次に、ルート。htaccessファイルに次の行を追加して、HTTPSを介してすべてのボット要求をリダイレクトし、代わりにrobots_https.txtを使用します。

RewriteCond %{SERVER_PORT} ^443$ 
RewriteRule ^robots.txt$ robots_https.txt
0
zigojacko