2012-03-25 22 views
5

ASP.NET MVC 3のウェブサイトにいくつかのページがあります(ここでの技術は重要ではありません)。ページの<script>タグに特定のURLをレンダリングして、JavaScript(外部ファイルに保存)サーバーへのAJAX呼び出しを実行できます。ボットがAJAXベースのURLをクロールするのを止めるにはどうすればいいですか?

このような何か:

<html> 
    ... 
    <body> 
     ... 
     <script type="text/javascript"> 
     $(function() { 
      myapp.paths.someUrl = '/blah/foo'; // not hardcoded in reality, but N/A here 
     }); 
     </script> 
    </body> 
</html> 

今サーバー側では、これらのURLのほとんどのは、それを知らせる属性で保護されています

A)彼らは、AJAX(例えばXmlHttpRequestの)によってアクセスすることができます

B)はJSONを返すように、それらは、(HTTP POSTによってアクセス可能 - セキュリティ)

問題は、いくつかのreasoためありますn、ボットがこれらのURLをクロールして、HTTP GETを実行しようとすると、404が発生します。

私はボットがjavascriptを試してはならないという印象を受けました。では、これらのURLをどのように保持していますか?

これを防ぐ方法はありますか?

これらのURL変数を外部ファイルに移動することはできません。上のコードのコメントからわかるように、私はURLをサーバーコードで出力します(実際のページで行う必要があります)。

私は基本的に、私のウェブサイトへのルーティングをHTTP 410(Gone)のURLに追加しました(AJAX POSTでない場合)。どちらが本当に迷惑なのですか?それは私の既に納得したルートテーブルに別のルートを追加しているからです。

ヒント/ご提案はありますか? robots.txtの中に接頭辞によって

+0

@ RPM1984:ちょうど好奇心の外に、ユーザーエージェントによるヒット数に関する統計を集めましたか?これから、あなたはどんな種類のボットに悩まされていますか? –

+0

私はgooglebotがjavascriptをクロールするいくつかの限られた能力を持っていると思うので、問題になる可能性があります。 Googlebotはrobots.txtを尊重していますが、クロールを防ぐために設定することができます。 –

答えて

2

許可しないURL

+0

「接頭辞」はどういう意味ですか?あなたは少し拡大できますか? /あなたは、より具体的に、あなたが必要なだけのエントリを禁止することができます 何とか(例えば/何とか/ fooの開始すべてのURLを見てクローラを防ぐことができます – RPM1984

+0

すなわち 「のDisallow /何とか」 。 –

+0

うーん、本当に現実的ではありません。私は約20のajax'ified URL、異なるパス/形式を持っているので、私は特定のURLパスにそれらを移動しない限り、私は20 robots.txtエントリが必要です。 – RPM1984

関連する問題