Поисковые системы не могут проиндексировать сайт asp.net из-за 302 перенаправлений на страницу ошибок - PullRequest
7 голосов
/ 06 декабря 2010

Мне сложнее всего определить причину, по которой наш сайт Asp.net не индексируется в поисковых системах - весь сайт.Когда я использую инструмент Google Fetch As Googlebot, он выдает ошибку ниже.Я убедился, что мой сайт работает с отключенными сеансами (т. Е. Настройка sessionMode = "Off" в web.config), я гуглил по всей сети, но все равно не повезло.Я получаю от 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>

1 Ответ

4 голосов
/ 07 декабря 2010

Я нашел ответ сам.

Перед использованием обязательно проверьте Request.UserLanguages! = Null. Также убедитесь, что для CurrentCulture установлено допустимое значение по умолчанию. Причина обеих этих проверок заключается в том, что боты не используют Request.UserLanguages ​​- он всегда равен нулю. Браузеры используют Request.UserLanguages. Чтобы переформулировать это другими словами: Не устанавливайте CurrentCulture, если Request.UserLanguages ​​имеет значение null.

Вот проблема:

Все страницы aspx на моем сайте наследуются от пользовательского базового класса, который наследуется от System.Web.UI.Page. Это не проблема, пока вы не переопределите события OnLoad () или init с помощью кода, который выдает исключение только для ботов. У меня была эта строка кода в моем событии OnLoad ():

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

Этот код прекрасно работает при доступе к страницам aspx из браузера. Duh! кто не собирается использовать браузер ...? ответ: googlebot и все остальные боты.

Как проверить, есть ли у googlebot проблема с индексацией вашего сайта:

  1. Зарегистрируйтесь в google webmastertools, если вы этого еще не сделали.
  2. Перейти в Labs -> Выбрать как Googlebot
  3. Введите URL-адрес, который вы хотите проверить. Затем нажмите на ссылку статуса, чтобы увидеть, что нашел робот Google. Если googlebot вернул перенаправления (например, 302), это обычно не очень хорошая вещь. Если все страницы вашего сайта перенаправляют на вашу пользовательскую страницу ошибки 302, значит у вас проблема. Что означает, что ваши веб-страницы выдают ошибку (необработанное исключение) всякий раз, когда googlebot пытается получить к ним доступ. Просмотрите функции Page_Load () и Init () на наличие ошибок, которые может вызвать googlebot иметь. Вы также можете протестировать свои страницы, используя классное приложение командной строки под названием curl (http://curl.haxx.se/).. С помощью этого инструмента я смог протестировать сайт на нашем тестовом сервере перед его выпуском в эксплуатацию (что вам придется делать каждый раз, когда вы вносите изменения при использовании Google fetch).
...