web-dev-qa-db-ja.com

同じディレクトリでホストされているサイトごとに異なるrobots.txtファイルを提供する

私たちは、LATAMの部分だけに取り組んでいるグローバルブランドのウェブサイトプロジェクトを持っています。ここには、コストを削減するために、複数のccTLDで1つのWebサイトをインストールできるWebサイトインストールプロセスがあります。

このため、www.domain.com/robots.txtのrobots.txtはwww.domain.com.ar/robots.txtの同じファイルです。

LATAMの国別ロケール(AR、CO、CLなど)ごとにカスタムrobots.txtファイルを実装したいと思います。私たちが考えている解決策の1つは、www.domain.com.ar/robots.txtを301からwww.domain.com.ar/directory/robots.txtにリダイレクトすることです。

このようにして、各国のロケールごとにカスタムrobots.txtファイルを作成できます。

  1. これは理にかなっていますか?
  2. Robots.txtファイルを別のrobots.txtファイルにリダイレクトすることはできますか?
  3. 他の提案はありますか?

ご意見をお寄せいただきありがとうございます。

6
Edgar Quintero

すべてのスパイダーがリダイレクトに従ってrobots.txtファイルに到達できるとは期待していません。参照: Googleはrobots.txtのリダイレクトヘッダーを別のファイル名に尊重しますか?

Apacheサーバーでホストされていると仮定すると、.htaccessファイルのmod_rewriteを使用して、正しいドメインに正しいファイルを提供できます。

RewriteEngine On
RewriteCond %{HTTP_Host} ^www\.example\.([a-z\.]+)$
RewriteRule ^robots.txt /%1/robots.txt [L]

その場合、robots.txtドメインの.clファイルは/cl/robots.txtにあり、.com.aurobots.txtファイルは/com.au/robots.txtにあります

9

このshouldは機能しますが、いくつかの潜在的な欠点があります。

  • すべてのクローラーは2つのHTTP要求を実行する必要があります。1つはリダイレクトを検出し、もう1つは実際にファイルを取得します。

  • 一部のクローラーは、robots.txtの301応答を正しく処理しない場合があります。 元のrobots.txt仕様 には何も記載されていないため、リダイレクトについては何も言わないので、おそらく通常のWebページと同じように扱われる(つまり、従う)必要がありますが、allサイトをクロールしたい無数のロボットがそれを正しくします。

    1997 Internet Draft は、「[o] nサーバーリダイレクト(HTTPステータスコード3XX)を示すサーバー応答は、リソースができるまでリダイレクトに従う必要がある」と明示的に述べています。 be found」が、それが公式の標準になっていないため、クローラーが実際にそれに従う必要はありません。)

一般に、要求されたドメインに応じて、robots.txtに対して異なるコンテンツを返すようにWebサーバーを単純に構成することをお勧めします。たとえば、Apache mod_rewrite を使用すると、robots.txtを次のようなドメイン固有のファイルに内部的に書き換えることができます。

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_Host} ^(www\.)?domain(\.com?)?\.([a-z][a-z])$
RewriteCond robots_%3.txt -f
RewriteRule ^robots\.txt$ robots_%3.txt [NS]

このコードは、サイトの共有ドキュメントルートの.htaccessファイルに配置され、たとえばwww.domain.com.ar/robots.txtをファイルrobots_ar.txtに追加します(存在する場合)(2番目のRewriteCondがチェックします)。ファイルが存在しない場合、またはホスト名が正規表現と一致しない場合、標準のrobots.txtファイルがデフォルトで提供されます。

(ホスト名の正規表現は、www.プレフィックスのないURLにも一致し、co.の代わりに2LD com.domain.co.ukのように)を受け入れるように十分に柔軟でなければなりません。 domainの後の単なるccTLDでも、必要に応じて、さらに多くのケースを受け入れるように調整できます。このコードはテストしていないため、バグ/タイプミスがある可能性があります。

別の可能性は、robots.txtのリクエストを(たとえば)PHPスクリプトに内部的に書き換えることです。これにより、ホスト名や必要なものに基づいてファイルのコンテンツを動的に生成できます。 mod_rewriteを使用すると、これは次のように簡単に実現できます。

RewriteEngine On
RewriteBase /

RewriteRule ^robots\.txt$ robots.php [NS]

(実際のrobots.phpスクリプトの作成は演習として残されています。)

4
Ilmari Karonen