回答:
最初のステップは、許可したいボットのユーザーエージェントを検出し、許可したいユーザーエージェントでない場合は別のファイルを提供することです。
たとえばrobots.txt
、サイトマップへの参照のあるバージョンとないバージョンの2つのバージョンを使用できるため、競合他社がの内部を見てもサイトマップは見つかりませんrobots.txt
。
次に、サイトマップURLへのアクセスを検出し、UAが正しい場合にのみサイトマップを提供できます。それ以外の場合は、一般的な404ページを提供すると、競合他社はサイトマップの存在さえ知らない可能性があります。
ただし、これまでに説明したすべての対策は、あいまいさによるセキュリティです。User-Agentは簡単に偽装できます。
したがって、実際のGoogleBotを検出するには、次のことをお勧めします。
googlebot.com.
。要約すると:
マイクロソフトは、同じ手順を使用してクローラーを検出することをお勧めします。
このトリックはYahoo!で機能します。同じように。
DuckDuckGoの場合、この IPアドレスのリストを使用できます
DNSルックアップベースのスパイダー検出を使用する場合は、404エラーを使用する必要はありません。
404エラーページを使用する目的は、サイトマップが存在することを隠すことです。ただし、User-Agent
ヘッダーのみに依存しないより高度な手法を使用している場合は、それを回避することはできないので、403 Forbidden
ここで使用する正しいエラーコードなどの別のエラーコードを安全に使用できます。
問題は、コンテンツを検索エンジンでインデックスに登録する場合(かなり正しい)、サイトを実行するすべてのユーザーが検索エンジンの1つで検索すると、インデックスに登録されているURLを確認できることです。
サイトマップを「非表示」にしたい場合は、「秘密の」名前のURLに配置することができます。そのため、サイトマップを探している誰にとっても明白ではありませんが、robots.txtにサイトマップを含めることをお勧めします。他の人が言ったように、それをファイルし、検索エンジンのウェブマスターツールプロファイルの1つにアップロードします。これを行う必要がある理由を理解するのは困難です。
巧妙な解決策は、2つのサイトマップを生成することです。これらの1つ目は競合他社の利益のためで、2つ目は優先検索エンジンの利益のためです。軍事用語では、この最初のサイトマップはフェイントです。
「フェイント」には、基本的なウェブサイトの構造、ホームページ、お問い合わせ、私たちについて、主なカテゴリが含まれています。それは本当の取引のように見え、あなたが気にしない曖昧な検索エンジンでうまく機能します。また、競合他社にとっても役に立ちません。彼らがそれを見つけることができるようにそれが索引付けされることを許可し、それに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はそれらに注意を払っています。これは、サイトマップが大きい場合に重要です。
次に、製品のサイトマップを定期的にGoogleに送信する「cron」ジョブを作成します。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することもできます。ただし、有効になっている場合は、ウェブサーバーがgzipで圧縮されたファイルを提供する必要があります。
robots.txtは、サイトマップへのエントリを妨げない限り、特別なものである必要はありません。ユーザーエージェント文字列や複雑なものに基づいて、さまざまなrobots.txtファイルを送信する必要はありません。貴重なコンテンツを宣伝されていない補足ファイルに取り出し、それを(ボットを待つのではなく)cronジョブでGoogleに送信するだけです。シンプル。
サイトの構造によって競合他社に問題が発生する理由がわかりません。
サイトマップの目的は、ページをインデックスに登録することです。そうすることで、人々はそれらを簡単に見つけられるようになります。
/news/
ニュース記事が含まれています/forum/
フォーラムのすべての議論が行われる場所ですこれらは、より多くのトラフィックを獲得し、情報を提示するために、索引付け可能になります。
インデックスを付けたくないフォルダは
次に、それが事実である場合、それらはサイトマップにまったく含まれていてはなりません。さらに、それらをインデックスから除外することもできます。
許可するボットの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
試してみる方法の1つ:通常のクロールセッションでは、Googleボットがrobots.txtにアクセスしてから、サイトマップファイルにアクセスします。robots.txtのすべての配信に対してCookieをプッシュし、Cookieを持つユーザーにのみサイトマップへのアクセスを許可します。GoogleボットがCookieを受け入れない場合に問題が発生します。だから反対を行います。ユーザーがrobots.txt以外のページにアクセスしたときにCookieをプッシュし、Cookieがあるサイトマップへのアクセスを拒否します。また、サイトマップに時間の経過とともに変化してわかりにくい名前を付けます。競合他社のブラウザでCookieが有効になっている場合、検索エンジンが追跡している正確なパスに従わない限り、競合他社がサイトマップにアクセスすることは非常に困難です。
私はあなたの要件を正しく理解したと仮定して、答える勇気を示します。
</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リンクは表示されていますか?
はいと答えた場合、別のオプションが考えられます:
<a href="sitemap.xml"> </a>
このようにして、好奇心旺盛な通常のユーザーはあなたのリンクに気付かないでしょう。検索エンジンはそれを認識します。ただし、質問の固有の性質には不可能性が含まれることに注意してください。
たとえば、ユーザーがこの用語を使ってGoogleで検索すると、
* site:www.yoursite.com
next
リンクをクリックするのに飽きなければ、全世界がすべてのリンクを見ることができます。
これらがお役に立てば幸いです。