web-dev-qa-db-ja.com

robots.txtでドメインを除外する

Robots.txtでドメイン名を除外することはできますか?

単一のDrupal複数のドメインを指しているサイトがあります。たとえば、.htaccessパスワード保護が無効になっていると、開発サーバーとステージングサーバーがGoogleによってクロールされます。

開発サーバーでのアクセスをブロックするつもりはありませんが、ドメインが開発中またはステージング中の場合は、検索エンジンボットにすべてのコンテンツのインデックス作成を停止するように指示します。

基本的に、Googleでコンテンツの一部を検索すると、開発サーバーを指すリンクの一部が表示されます。

これを処理できる方法またはモジュールはありますか?

編集:

ここに私が終わった方法があります。内部theme_preprocess_html()

// Avoid search engines to index dev and stage domains.
  $restricted_domains = array('dev.mydomain.com', 'stage.mydomain.com', 'editorial.mydomain.com'); 
  if (in_array($_SERVER['HTTP_Host'], $restricted_domains)) {
    $meta_robot = array(
      '#tag' => 'meta',
      '#attributes' => array(
        'name' => 'robots',
        'content' => 'noindex, nofollow'
      ),
    );
    drupal_add_html_head($meta_robot);
  }
5
ninjascorner

Robots.txtは、サイトが何かによって(技術的に)クロールされるのを助けません。これらはボットが従うべきガイドラインですすべき=。ファイアウォールルールによって、またはhttpauthで述べたように、開発サーバーとテストサーバーへのアクセスを制限する必要があります。

9
tenken

これらの行を.htaccessに追加します。

# Dev environments other robots.txt to prevent indexing.
RewriteCond %{HTTP_Host} (.*)mystagingurl\.com
RewriteCond %{REQUEST_URI} (robots\.txt)
RewriteRule .* robots-dev.txt [L]

ルートにrobots-dev.txtという名前の追加ファイルを作成し、次のコードを追加します

User-agent: *
Disallow: /

これにより、robots.txtガイドラインに従うすべての検索エンジンから除外された、一致するドメインの別のrobots.txtが提供されます。

指定された例に一致するURLの例は次のとおりです。

  • mystagingurl.com
  • www.mystagingurl.com
  • abc.mystagingurl.com
  • abc.def.mystagingurl.com
2
StryKaizer

Tenkenが述べたように、robots.txtまたはrobotsメタタグはロボットをブロックしません。これらは単なるガイドラインです。ただし、すべてのwell-behavedロボット(およびgooglebotがこのカテゴリに該当)は、これらのガイドラインに従います。

(質問でのあなたの発言に基づいて)mydomain.comという名前の本番ドメインと、GoogleのSERPという名前のdev.mydomain.com)に表示したくない3つのサブドメインがあると仮定します。 、stage.mydomain.comeditorial.mydomain.com、除外する3つのサブドメインのルートディレクトリDocumentRoot)にrobots.txtが続く:

User-agent: *
Disallow: /

これは、本番ドメイン(mydomain.com)がnotを開発サブドメイン(dev.mydomain.comstage.mydomain.comと同じDocumentRootとすることを前提としています。およびeditorial.mydomain.com)。 4つのドメインすべてが単なるエイリアスでsameルートディレクトリを指すようにWebサーバーが設定されている場合、roobots.txtファイルは4つすべてで共有され、もちろんメインサイトがクロールされないようにします。その場合、robots.txtは使用できませんが、質問の最新バージョンで説明しているように、ドメインに応じてヘッダーにメタタグを追加する必要があります。

コメント:tenkenが述べているように、robots.txtまたはメタタグを使用することは、開発およびステージングサーバーをパブリックアクセスから保護するためのbestの方法ではありませんが、これを使用する必要がありますwork適切なファイアウォールを設置するまでの簡単な修正として。

1
Free Radical

メタタグモジュール( https://www.drupal.org/project/metatag )で解決しました。 dev.mydomain.comで、メタタグモジュール(/ admin/config/search/metatags/config/global)のグローバル設定を適宜構成しました。

グローバル設定で[詳細]をクリックし、[検索エンジンがこのページをインデックスに登録しないようにする]をオンにします。 「ロボット」の下。

これは追加されます

<meta content="noindex" name="robots">

開発サイトのセクションに移動します。

0
criscom