7

Asp.netサイトが検索エンジン(サイト全体)でインデックスに登録されない原因を特定するのに最も苦労しています。グーグルの「FetchAsGooglebot」ツールを使用すると、以下のエラーがスローされます。私のサイトがセッションを無効にして動作することを確認しました(つまり、web.configでsessionMode = "Off"を設定します)、ウェブ全体をグーグルで検索しましたが、それでも運がありません。

これが私がgooglebotから得ているエラーです:

 HTTP/1.1 302 Found
 Date: Thu, 02 Dec 2010 23:05:49 GMT
 Server: Microsoft-IIS/6.0
 X-Powered-By: ASP.NET
 X-AspNet-Version: 2.0.50727
 Location: /ErrorPage.aspx?aspxerrorpath=/Default.aspx
 Cache-Control: private
 Content-Type: text/html; charset=utf-8
 Content-Length: 168

 <html><head><title>Object moved</title></head><body>
 <h2>Object moved to <a href="%2fErrorPage.aspx%3faspxerrorpath%3d%2fDefault.aspx">here</a>.</h2>
 </body></html>
4

1 に答える 1

4

私は自分で答えを見つけました。

使用する前に Request.UserLanguages != null を確認してください。また、CurrentCulture が有効なデフォルト値に設定されていることを確認してください。これらの両方のチェックの理由は、ボットが Request.UserLanguages を使用しないためです。これは常に null です。ブラウザは Request.UserLanguages を使用します。言い換えると、Request.UserLanguages が null の場合は CurrentCulture を設定しないでください。

問題は次のとおりです。

私のサイトのすべての aspx ページは、System.Web.UI.Page から継承するカスタム基本クラスから継承します。ボットのみの例外をスローするコードで OnLoad() または init イベントをオーバーライドするまで、これは問題になりません。OnLoad() イベントに次のコード行がありました。

Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(Request.UserLanguages[0]);

このコードは、ブラウザーから aspx ページにアクセスするときにうまく機能します。当たり前!ブラウザを使わない人は…? 答え: googlebot と他のすべてのボット。

Googlebot によるサイトのインデックス登録に問題があるかどうかを確認する方法:

  1. まだ登録していない場合は、Google webmastertools に登録してください。
  2. ラボに移動 -> Fetch As Googlebot
  3. 確認したいURLを入力してください。次に、ステータス リンクをクリックして、googlebot が検出したものを確認します。googlebot がリダイレクト (302 など) を返した場合、それは通常、良いことではありません。サイトのすべてのページでカスタム エラー ページへの 302 リダイレクトが発生している場合は、問題があります。これは、Googlebot が Web ページにアクセスしようとするたびに、Web ページがエラー (未処理の例外) をスローしていることを意味します。Page_Load() および Init() 関数を調べて、Googlebot に発生する可能性のあるエラーを探します。curl ( http://curl.haxx.se/ )と呼ばれるクールなコマンドライン アプリを使用して、ページをテストすることもできます。このツールを使用して、本番環境にリリースする前にテスト サーバーでサイトをテストすることができました (これは、Google フェッチを使用して変更を加えるたびに行う必要があることです)。
于 2010-12-07T00:23:33.583 に答える