2010-12-06 12 views
7

Me está costando mucho determinar la causa de que nuestro sitio Asp.net no se indexe en los motores de búsqueda: todo el sitio. Cuando uso la herramienta de búsqueda de Google "Fetch As Googlebot", arroja el siguiente error. Me aseguré de que mi sitio funcionara con sesiones deshabilitadas (es decir, estableciendo sessionMode = "Off" en web.config), busqué en Google y todavía no tuve suerte.Los motores de búsqueda no pueden indexar el sitio asp.net debido a los 302 redireccionamientos a la página de error

Aquí está el error que estoy recibiendo de 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> 
+0

esto es menos de una pregunta y más de una respuesta. Aunque es muy útil, tal vez lo convierta en Community Wiki, o podría cerrarse. –

+0

Es bueno saber que suena como eso hubiera sido difícil de entender. –

+3

Debe escribir sobre esto, no publicar una retórica o documento de "cómo hacerlo" – stillstanding

Respuesta

4

he encontrado la respuesta a mí mismo.

Asegúrese de comprobar Request.UserLanguages! = Null antes de usarlo. Además, asegúrese de que CurrentCulture esté establecido en un valor predeterminado válido. El motivo de estos dos controles es que los bots no usan Request.UserLanguages, siempre es nulo. Los navegadores usan Request.UserLanguages. Para replantearlo en otras palabras: No configure CurrentCulture si Request.UserLanguages ​​es nulo.

aquí está el problema:

Todas las páginas aspx en mi sitio heredan de una clase base personalizada que hereda de System.Web.UI.Page. Esto no es un problema hasta que anule OnLoad() o inicie eventos con código que arroje una excepción solo para bots. Tenía esta línea de código en mi evento onLoad():

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

Este código funciona muy bien cuando se accede a las páginas aspx desde un navegador. Duh! ¿Quién no va a usar un navegador ...? respuesta: googlebot y todos los demás bots.

¿Cómo comprobar si el robot de Google tiene un problema de la indexación de su sitio:

  1. registrarse en Google webmastertools si no lo ha hecho.
  2. Ir a Laboratorios -> Buscar como Googlebot
  3. Escriba la URL que desea verificar. A continuación, haga clic en el enlace de estado para ver qué googlebot encontró. Si googlebot devolvió cualquier redirección (como la de 302), generalmente no es algo bueno. Si todas las páginas de su sitio obtienen 302 redireccionamientos a su página de error personalizada, entonces tiene un problema. Lo que significa es que sus páginas web están arrojando un error (una excepción no controlada) cuando googlebot intenta acceder a ellas. Mire a través de las funciones Page_Load() e Init() para detectar los errores que pueda tener el robot de google. También puede probar sus páginas con una aplicación de línea de comando llamada curl (http://curl.haxx.se/). Usando esta herramienta, pude probar el sitio en nuestro servidor de prueba antes de lanzarlo a producción (que es lo que tendrías que hacer cada vez que hagas un cambio al usar google fetch).
Cuestiones relacionadas