web-dev-qa-db-ja.com

検索エンジンからではなく競合他社からXMLサイトマップを非表示にする方法

サイトマップXMLファイルをすべて非表示にしますが、検索エンジンからのアクセスは許可します。

それを行う方法は何ですか?

サイトのコンテンツの深さを競合他社から隠したい。

10
AgA

最初のステップは、 許可するボット のUser-Agentを検出し、許可するUser-Agentでない場合は別のファイルを提供することです。

たとえば、robots.txtの2つのバージョンを使用できます。1つはサイトマップへの参照あり、もう1つはサイトマップへの参照なしで、robots.txtの内部を見ると競合他社はサイトマップを見つけられません。

次に、サイトマップURLへのアクセスを検出し、UAが正しい場合にのみサイトマップを提供できます。それ以外の一般的な404ページを提供する場合、競合他社はサイトマップの存在さえ知らない可能性があります。

ただし、これまでに説明したすべての手段は、あいまいさによるセキュリティにすぎません。 User-Agentは簡単になりすますことができます。

したがって、Google 推奨 つまり、実際のGoogleBotを検出するには、次のようにします。

  1. GoogleBotであると主張するIPアドレスに対して逆DNSルックアップを実行します。
  2. ホストがgooglebot.com.のサブドメインかどうかを確認します。
  3. サブドメインの通常のDNSルックアップを実行します。
  4. サブドメインがサイトをクロールするボットのIPアドレスを指しているかどうかを確認します。

まとめると:

Flow chart (when to show site map)

Microsoft 同じ手順を使用することをお勧めします クローラーを検出します。

このトリック Yahoo!で動作します も同様です。

DuckDuckGoの場合、IPアドレスの このリスト を使用できます

注意

DNSルックアップベースのスパイダー検出を使用する場合、404エラーを使用する必要はありません。

404エラーページを使用する目的は、サイトマップがまったく存在しないことを隠すことです。ただし、User-Agentヘッダーだけに依存しない、より高度な手法を使用している場合は、 403 Forbidden などの別のエラーコードを安全に使用できるように、回避することはできません。ここで使用する正しいエラーコード。

8
user2428118

問題は、(当然)コンテンツを検索エンジンでインデックス化する場合、サイトを実行する誰でも、検索エンジンの1つで検索すると、どのURLがインデックス化されているかを確認できることです。

サイトマップを「非表示」にしたい場合は、「秘密」の名前のURLにそれを置くことができます。したがって、サイトマップを探している人にはわかりませんが、robots.txtにサイトマップを含めることをお勧めします他の人が言ったように、ファイルを検索エンジンのウェブマスターツールプロファイルの1つにアップロードします。

6
user3336644

巧妙な解決策は、2つのサイトマップを生成することです。これらの1つ目は競合他社の利益のためであり、2つ目はお好みの検索エンジンの利益のためです。軍事用語では、この最初のサイトマップはかすかなものです。

「フェイント」には、基本的なWebサイト構造、ホームページ、お問い合わせ、弊社についての主要なカテゴリが含まれています。それは本当の取引のように見え、あなたが気にしないあいまいな検索エンジンでうまく機能します。また、競合他社にとっても役に立ちません。インデックスが作成されるようにインデックスを付け、sitemap.xmlのようなわかりやすい名前を付けます。

次に、コードを使用して実際のサイトマップを作成します。 「product-information-sitemap.xml」などの名前を付けて、わかりやすい名前にしますが、実際にはパスワードよりも推測しにくい名前にします。

サイトマップフォルダのApache構成に、検索エンジンがこの2番目のサイトマップにアクセスできるように、ただしインデックスは付けられないように、何かを配置します。

<IfModule mod_rewrite.c>
    <Files product-information-sitemap.xml>
        Header set X-Robots-Tag "noindex"
    </Files>
</IfModule>

次に、コードを作成して更新を維持します。画像の3番目のサイトマップを検討します。 「フェイント」を作成するために、必要に応じてダウングレードします。タイムスタンプにも注意を払ってください。Googleはそれらにも注意を払っています。これはサイトマップが大きい場合に重要です。

次に、「cron」ジョブを作成して、製品サイトマップを定期的にGoogleに送信します。 crontabエントリに次のようなものを追加して、実際のサイトマップを毎週送信します。

0 0 * * 0 wget www.google.com/webmasters/tools/ping?sitemap=http%3A%2F%2Fwww.example.com%2Fsitemaps%2Fproduct-information-sitemap.xml

URLはURLエンコードされていることに注意してください。

サイズに問題がある場合は、サイトマップをgzipで圧縮することもできますが、有効になっている場合はWebサーバーでgzip圧縮されたサービスを提供する必要があります。

Robots.txtは特別なものである必要はありません。サイトマップへのエントリを妨げない限り、問題ありません。ユーザーエージェント文字列などの複雑なものに基づいて、異なるrobots.txtファイルを送信する必要はありません。貴重なコンテンツを広告用の補足ファイルに引き出し、cronジョブで(ボットを待つのではなく)Googleに送信するだけです。シンプル。

4
Theodores

サイトの構造が競合他社との問題を引き起こす理由がわかりませんか?

サイトマップのポイントは、ページのインデックスを作成することです。そのため、人々はページを簡単に見つけることができます。

  • /news/にはニュース記事が含まれます
  • /forum/は、すべてのフォーラムディスカッションの場所です

より多くのトラフィックを獲得し、情報を提示するために、これらはインデックス化可能です。

インデックスを持ちたくないフォルダは

  • サイトを機能させるPHPクラスと関数
  • サイト画像、CSS、JavaScriptフォルダー
  • 管理パネル

次に、その場合、それらはサイトマップにまったく含まれてはなりません。さらに、それらをインデックスから除外することもできます。

0
user37204

私はあなたの要求を正しく理解したと仮定して、答える勇気を示します。

</html>タグの直前にサイトマップへの画像リンクを提供します。透明な1px gifファイルを使用します。

<a href="sitemap.xml"><img src="transparent.gif" alt="" height="1" width="1" /></a>

サイトマップのリンクがあるページで、関連するメタタグを設定します。

<meta name="robots" content="{index or noindex},follow">

を押したときに視覚状態を確認します Ctrl+A すべてのページを選択します。 1pxリンクは表示されていますか?

あなたがイエスと言った場合、別のオプションがあります:

  1. サイトマップへのリンクを作成します:<a href="sitemap.xml">&nbsp;</a>
  2. 背景色と同じフォントの色を変更する
  3. CSSテクニックを使用して、このリンクを画像の背後に非表示にします

このようにして、奇妙な普通のユーザーはあなたのリンクに気付かないでしょう。検索エンジンはそれを認識します。しかし、あなたの質問に内在する性質は不可能であることに注意してください。

たとえば、ユーザーがこの用語でGoogleを検索すると

* site:www.yoursite.com

nextリンクをクリックするのに疲れなければ、全世界がすべてのリンクを見ることができます。

これらが役立つことを願っています。

0
Andre Chenier

許可したいボットのIPアドレスがある場合:

<Limit GET POST PUT>
order deny,allow
deny from all
allow from 192.168.1.1 # IP 1
allow from 192.168.1.2 # IP 3
allow from 192.168.1.3 # IP 2
</LIMIT>

ユーザーエージェント文字列に基づいて必要な場合:

Order Allow,Deny
allow from env=good_bot_1
allow from env=good_bot_2
0
Martijn

1つの方法:通常のクロールセッションでは、Googleボットはrobots.txtにアクセスしてから、サイトマップファイルに移動します。 robots.txtのすべての提供に対してCookieをプッシュし、Cookieを持つユーザーのみにサイトマップへのアクセスを許可します。 GoogleボットがCookieを受け入れない場合に問題が発生します。だから反対を行います。ユーザーがrobots.txt以外のページにアクセスし、Cookieを持つサイトマップへのアクセスを拒否する場合は、Cookieをプッシュします。また、サイトマップにスクランブルされた名前を付けます。これは、時間とともに変化し、推測できないものにします。競合他社のブラウザでCookieが有効になっている場合、検索エンジンがたどる正確なパスをたどらない限り、サイトマップにアクセスすることは非常に困難です。

0
Rana Prathap