web-dev-qa-db-ja.com

robots.txtを使用して、多数の不要なページをGoogleインデックスから削除します

サイトの検索で自動生成された多数のページが、エラーのためGoogleによってインデックスに登録されました。

最も高品質のコンテンツのみがGoogleインデックスにあることを確認するために、これをきれいにしようとしています。

そこで、Googlebotがクロールに時間を浪費しないように、robots.txtでこのディレクトリを禁止する行を追加しました。

Disallow: /search/

数か月後、期待どおりに機能し、ほとんどのページはこのメッセージのあるURLとしてのみGoogleにインデックスされます。

このサイトのrobots.txtのため、この結果の説明は利用できません

これはパンダのような将来のペナルティを防ぐのに十分ですか、それともインデックスに残っているので(許可されていないためURLだけでも)、Googleは最後のクロールから「キャッシュ」にページを保持し、問題を引き起こす可能性がありますか?

5
Jonathan Meyer

私が提案するのは、検索結果ページ用のまったく新しいURLセットを作成し、古いURLをリクエストしているユーザーに対して、HTTP 410ステータスコードを含むエラーページを生成することです。また、POSTリクエストメソッドを介してのみ検索ページにアクセスできるようにします。

適切なフォームに入力した結果としてリクエストされた場合、GoogleはPOSTを介してリクエストされたページをクロールしません。例として、Webサイトの特定のセクションへのログインがあります。

例えば:

現在の検索結果URLが次の形式の場合:

http://example.com/results.php?query=abc

その後、ページが使用できなくなったことを示すエラーとともに410ステータスコードを返す必要があります。

あなたがする必要があるのは、適切な検索フォームを作成することです。 HTMLでは、これは機能します。

<form action="searchfor.php" method="post">
Query: <input type="text" name="query">
<input type="submit" value="search">
</form>

ユーザーが検索をクリックすると、リクエストされたページはsearchfor.phpになり、投稿されたデータはquery = whatever(ユーザーが入力したテキストと置き換えます)になり、サーバースクリプトで値を抽出できます。すべての検索結果ページで、アドレスバーのURLは常に同じままですが、ページはクエリに基づいて異なります。

最良の結果を得るには、フォームアクションの値が異なるスクリプト名を指していることを確認してください。ただし、スクリプトはサーバー上に存在する必要があります。スクリプトを使用すると、URLを完全に挿入できます。

人々が検索結果ページにアクセスする他の方法がないことを確認してください。そうすれば、Googleはそれらにアクセスしようとしません。ユーザーがハイパーリンク経由で別の方法でアクセスできるようにする必要がある場合は、アンカータグ内にrel="nofollow"を含め、特定の結果ページにインデックスを作成できないようにする必要があります。ページのインデックスを作成できないようにする方法については、このスレッドの他の回答を参照してください。

1
Mike

Googleはrobots.txtで指定された許可されていないパスをクロールしませんが、robots.txtで制御できません 他のサイトからのサイト検索結果への参照

Googleはrobots.txtでブロックされたコンテンツをクロールまたはインデックス登録しませんが、ウェブ上の他の場所から許可されていないURLを見つけてインデックス登録する場合があります。その結果、URLアドレス、および場合によってはサイトへのリンクのアンカーテキストなどの他の公開情報がGoogle検索結果に表示される可能性があります。サーバー上のファイルをパスワードで保護したり、noindexメタタグや応答ヘッダーを使用するなど、他のURLブロック方法を使用して、Google検索結果にURLが完全に表示されないようにすることができます。

ソース: https://support.google.com/webmasters/answer/6062607

メタタグを使用したブロック検索インデックス作成

ページのHTMLコードにnoindexメタタグを含めることで、ページがGoogle検索に表示されないようにすることができます。 Googlebotが次にそのページをクロールすると、Googlebotはnoindexメタタグを参照し、他のサイトがリンクしているかどうかに関係なく、Google検索結果からそのページを完全に削除します。

ほとんどの検索エンジンWebクローラーがサイトのページのインデックスを作成できないようにするには、ページのセクションに次のメタタグを配置します *

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

Google Webクローラーのみがページのインデックスを作成できないようにするには:

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

ソース: https://support.google.com/webmasters/answer/9371

2
marcanuy

Googleはrobots.txtでNoindex:をサポートしています 実験的な機能として。これはそれを使用するのに最適なケースのようです:

User-Agent: *
Disallow: /search/
Noindex: /search/
2