20

私は、パブリック インターネット上に、いくつかの Web サイトのプロダクション コードのコピーを実行しているステージング サーバーのようなものを持っています。ステージング サイトがインデックスに登録されるのは本当に嫌です。

ステージング サーバーの httpd.conf を変更して、検索エンジンのクローラーをブロックする方法はありますか?

スクリプトを使用して同じコード ベースを両方のサーバーにコピーするため、robots.txt を変更しても実際には機能しません。また、サイトがたくさんあり、新しいサイトを作成する場合に特定の設定をコピーすることを覚えておく必要がないため、仮想ホストのconfファイルも変更したくありません。

4

6 に答える 6

38

次の内容で robots.txt ファイルを作成します。

User-agent: *
Disallow: /

そのファイルをステージング サーバーのどこかに置きます。ディレクトリ ルートは、そのための最適な場所です (例: /var/www/html/robots.txt)。

以下を httpd.conf ファイルに追加します。

# Exclude all robots
<Location "/robots.txt">
    SetHandler None
</Location>
Alias /robots.txt /path/to/robots.txt

このSetHandlerディレクティブはおそらく必要ありませんが、たとえば mod_python などのハンドラーを使用している場合は必要になる場合があります。

その robots.txt ファイルは、サーバー上のすべての仮想ホストに提供され、個々のホスト用の robots.txt ファイルを上書きします。

(注:私の答えは、ceejayozの答えがあなたに示唆していることと本質的に同じですが、それを機能させるためにすべての詳細を理解するために数分余分に費やす必要がありました。私は他の人のためにこの答えをここに置くことにしました誰がこの質問に出くわすかもしれません。)

于 2011-09-09T16:58:26.670 に答える
4

これを行うには、Apache の mod_rewrite を使用できます。実際のホストが www.example.com で、ステージング ホストが staging.example.com であるとします。「robots-staging.txt」というファイルを作成し、そのファイルに移動するようにリクエストを条件付きで書き換えます。

この例は、単一のステージング サイトを保護するのに適しています。これは、あなたが求めているものよりも少し単純なユース ケースですが、これは私にとっては確実に機能しました。

<IfModule mod_rewrite.c>
  RewriteEngine on

  # Dissuade web spiders from crawling the staging site
  RewriteCond %{HTTP_HOST}  ^staging\.example\.com$
  RewriteRule ^robots.txt$ robots-staging.txt [L]
</IfModule>

スパイダーを別のサーバーのマスター robots.txt にリダイレクトすることを試みることもできますが、一部のスパイダーは、HTTP 要求から「200 OK」または「404 not found」以外のリターン コードを受け取った後に動作を停止する場合があります。リダイレクトされた URL を読み取れない可能性があります。

これを行う方法は次のとおりです。

<IfModule mod_rewrite.c>
  RewriteEngine on

  # Redirect web spiders to a robots.txt file elsewhere (possibly unreliable)
  RewriteRule ^robots.txt$ http://www.example.com/robots-staging.txt [R]
</IfModule>
于 2009-08-14T15:49:58.047 に答える
2

ページのインデックス作成を完全に停止するには、HTTP認証の背後にあるサイトを非表示にする必要があります。これは、グローバルなApache構成で実行し、単純な.htpasswdファイルを使用できます。

これの唯一の欠点は、ステージングサーバー上の任意のページを初めて参照するときにユーザー名/パスワードを入力する必要があることです。

于 2008-10-22T19:18:05.363 に答える
2

ステージング仮想ホスト上の robots.txt を、別の場所でホストされている制限的な robots.txt にエイリアスできますか?

于 2008-10-22T19:00:53.603 に答える
1

展開シナリオに応じて、さまざまな robots.txt ファイルを dev/stage/test/prod (または任意の組み合わせ) に展開する方法を探す必要があります。異なるサーバーに異なるデータベース構成ファイルまたは (または類似のもの) があると仮定すると、これは同様のプロセスに従う必要があります (データベースには異なるパスワードがありますよね? )

ワンステップのデプロイ プロセスが整っていない場合、これはおそらくそれを取得する良い動機になります...さまざまな環境用のツールがたくさんあります-Capistrano はかなり優れたツールであり、Rails で好まれています/ Django の世界ですが、決して唯一のものではありません。

これらすべてに失敗した場合は、すべての仮想ホストに適用され、制限付きの robots.txt を指すグローバル Alias ディレクティブを Apache 構成に設定できます。

于 2008-10-22T19:04:00.853 に答える
0

Using Apache to stop bad robots を試してみてください。すべてのボットをブロックするのではなく、ユーザー エージェントをオンラインにするか、ブラウザーのみを許可することができます。

于 2008-10-22T18:58:33.670 に答える