robots.txtを使用してサブドメインのみを禁止するにはどうすればよいですか?


10

私のコードベースは、いくつかの環境(ライブ、ステージング、DEV)およびサブドメイン(の間で共有されるstaging.exampledev.exampleなど)、および2つだけクロールすることが許容されるべきである(すなわち。www.exampleexample)。通常は変更/robots.txtして追加しますがDisallow: /、コードベースが共有されているため、/robots.txtすべての(サブ)ドメインに影響を与えずに変更することはできません。

それについてどうやって行くのですか?

回答:


13

robots.txtサイトへのアクセスに使用したサブドメインに基づいて、別のファイルを提供できます。Apacheでこれを行う1つの方法は、.htaccessのmod_rewriteを使用して内部的にURLを書き換えることです。何かのようなもの:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^(www\.)?example\.com$ [NC]
RewriteRule ^robots\.txt$ robots-disallow.txt [L]

上記の状態にすべての要求のためにそのrobots.txtホストが以外でどこwww.example.comexample.com、そして内部にリクエストを書き換えますrobots-disallow.txt。そしてrobots-disallow.txtDisallow: /ディレクティブが含まれます。

.htaccessファイルに他のディレクティブがある場合、このディレクティブは、ルーティングディレクティブの前にある、一番上にある必要があります。


私は同じ解決策を考えていました。他に何かあるかどうかは
わかり

1
両方のサブドメイン/ホストが非常に同じウェブスペース/コードベースを指している場合、robots.txtの「標準」には、これを制御できるものが何もありません。ボットは単に要求するだけなsub.example.com/robots.txtので、サブドメインに応じて異なる応答を提供するために何かを行う必要があります。mod_rewriteを使用する必要はありませんが、これは私が何度か使用したテクニックです。robots.txtが動的に生成される場合は、サーバー側コード(PHPなど)で応答を変更できます。
MrWhite

を使用する代わりに、そのようなサブドメインにアクセスしたときにHTTP応答ヘッダーをrobots.txt送信することで、クロールではなくインデックス作成を防ぐX-Robots-Tag: noindexこともできます(.htaccessでも実行できます)。クロールを防ぐのがおそらく望ましいと思いますが。(?)
MrWhite 2016

1

robots.txt ルートに存在する場合にのみ機能します。

robots.txtからアクセスできるサブドメインWebサイトごとに個別にアップロードする必要がありますhttp://subdomain.example.com/robots.txt

に以下のコードを追加します robots.txt

User-agent: *
Disallow: /

また<META>、すべてのページにRobots タグを挿入することもできます。

<META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW">

3
しかし、OPには既に「通常はを変更/robots.txtして追加しますがDisallow: /、コードベースが共有されているため、/robots.txtすべての(サブ)ドメインに影響を与えずに変更することはできません。」
MrWhite 2016

0

HTMLページからメタタグを削除し、サブドメインに応じて動的に作成します。たとえば、サブドメインdevを使用します。開発のため。したがって、ページロードイベントでは次のようになります。

  ' Check if domain is DEV or PROD and set robots accordingly meta tag in head
  Dim metatag As HtmlMeta = New HtmlMeta
  metatag.Attributes.Add("name", "robots")
  If CurrentURL.Contains("dev.advertise-it") Then
    metatag.Attributes.Add("content", "NOINDEX, NOFOLLOW")
  Else
    metatag.Attributes.Add("content", "INDEX, FOLLOW")
  End If
  Page.Header.Controls.Add(metatag)

これはクロールを妨げませんが、これはOPの要件のように思われます。
MrWhite 2018年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.