Si las páginas a las que apuntan diferentes enlaces tienen mucho contenido igual, este fenómeno se denomina "contenido duplicado". Si un sitio web tiene mucho contenido repetido, los motores de búsqueda pensarán que el valor del sitio web no es alto. Por lo que deberíamos intentar evitar todo tipo de contenido duplicado.
El contenido duplicado en sitios web dinámicos a menudo es causado por parámetros de URL, y la reescritura de URL empeorará este fenómeno (lo cual es bastante intrigante, jaja). Porque si se utilizan los parámetros de URL originales, el motor de búsqueda puede tomar decisiones apropiadas y descubrir que el contenido duplicado es causado por los parámetros de URL, y manejarlo automáticamente en consecuencia. La reescritura de URL cubrirá los parámetros de URL, lo que hará que los motores de búsqueda no lo hagan; No reconoce los parámetros de URL. Por ejemplo:
URL original:
http://www.freeflying.com/articles.aspx?id=231&catelog=blog
http://www.freeflying.com/articles.aspx?id=231&catelog=news
URL después de reescritura de URL:
http://www.freeflying.com/blog/231.html
http://www.freeflying.com/news/231.html
El contenido de las páginas a las que apuntan estas URL es en realidad el mismo, ambos son el artículo con id = 231, pero las columnas del blog y de noticias hacen referencia a este artículo. Por varias razones, nuestra URL final sigue siendo la que se muestra arriba.
Hay dos formas de solucionarlo: una es utilizar el protocolo del robot para "excluir" una de ellas y la otra es redirigir permanentemente una de las URL a otra URL a través de 301.
Hoy hablaremos primero sobre el protocolo del robot. En pocas palabras, robot se refiere a un motor de búsqueda. En Google, también lo llamamos "araña". Las arañas son muy educadas y primero le pedirán su opinión antes de rastrear su contenido web. Usted y el robot se han comunicado anteriormente según el protocolo del robot. Específicamente para la implementación, hay dos formas:
1. Agregue un texto robots.txt al directorio raíz del sitio web, como por ejemplo:
#Contenido estático, prohibir todas las páginas bajo la carpeta "Admin"
Agente de usuario: *
No permitir: /Admin
La línea # indica un comentario;
User-agent se refiere al motor de búsqueda, * significa para todos los motores de búsqueda, también puede especificar un motor de búsqueda específico, como User-agent: googlebot;
Disallow especifica directorios o páginas a las que no se les permite acceder. Nota: 1. Este texto distingue entre mayúsculas y minúsculas 2. Debe comenzar con "", que indica el directorio raíz del sitio web;
Como objetivo de esta serie, nos centramos en la tecnología ASP.NET. Para obtener más notas sobre el texto robots.txt, consulte http://www.googlechinawebmaster.com/2008/03/robotstxt.html
Pero, ¿cómo generamos dinámicamente este archivo (en realidad, existen bastantes necesidades para esto)? Quizás lo que inmediatamente pensamos es en operaciones de E/S, escribiendo un archivo txt en el directorio raíz..., pero en realidad hay otra forma: usando un programa de procesamiento general (archivo .ashx), el código es el siguiente:
código
<%@ WebHandler Language="C#" Class="Handler" %>
usando Sistema;
usando System.Web;
Controlador de clase pública: IHttpHandler {
ProcessRequest pública vacía (contexto HttpContext) {
Respuesta HttpResponse = contexto.Respuesta;
respuesta.Clear();
//response.ContentType = "text/plain"; si desea utilizar IE6 para ver la página, no puede hacer esta declaración por razones desconocidas.
// Las dos oraciones siguientes deben ser generadas dinámicamente por la base de datos en uso real.
respuesta.Write("Agente de usuario: * n");
respuesta.Write("No permitir: /news/231.html n");
// Consulte el contenido de un archivo de robots estático, que almacena contenido protegido que no cambiará.
respuesta.WriteFile("~/static-robots.txt");
respuesta.Flush();
}
bool público es reutilizable {
conseguir {
devolver falso;
}
}
}
Generalmente, el controlador implementa IHttpHandler. En la sección UrlRewrite anterior, hablamos de HttpModule. De hecho, en el ciclo de vida de la aplicación ASP.NET, existe un concepto llamado "canalización": una solicitud HTTP pasa por un "filtrado". /procesamiento" de HttpModule, que eventualmente llega a la parte de "procesador" de un HttpHandle. HttpModule y HttpHandle forman una "canalización".
Si no está familiarizado con él, consulte el código fuente de Page y encontrará que Page también implementa IHttpHandler, por lo que los archivos *.aspx son los HttpHandle más utilizados. Pero Page no es solo un HttpHandler, también incorpora eventos complejos del ciclo de vida de la página, por lo que desde la perspectiva de ahorrar recursos, muchas veces también puedo usar un archivo *.ashx () personalizado y más liviano para realizar algunas tareas simples. De manera similar a generar un archivo txt, también podemos generar códigos de verificación (archivos jpg), archivos xml, etc.
Entonces lo siguiente que debe hacer es URLRewrite:
código
void Application_BeginRequest (remitente del objeto, EventArgs e)
{
// Código que se ejecuta al iniciar la aplicación
Contexto HttpContext = HttpContext.Current;
cadena ubicación actual = contexto.Request.Url.LocalPath;
if (UbicaciónActual.ToLower() == "/sitioweb1/robots.txt")
{
contexto.RewritePath("~/Handler.ashx");
}
}
De esta forma, la araña pensará que efectivamente existe un archivo robots.txt en el directorio raíz del sitio web.
2. Agregue la etiqueta META a la página que desea bloquear.
<meta id="meta" nombre="robots" contenido="noindex,nofollow" />
noindex significa que la página no se puede indexar
nofollow significa que la página no se puede "seguir" (se explicará en detalle en SEO Hack)
Este es el efecto de una página estática. Si necesita generarla dinámicamente, es bastante simple:
código
Page_Load vacío protegido (remitente del objeto, EventArgs e)
{
HtmlMeta meta = nuevo HtmlMeta();
meta.Nombre = "robots";
meta.Contenido = "noindex,nofollow";
this.Header.Controls.Add(meta);
}
La descripción, la palabra clave, etc. también se pueden especificar en meta, y la implementación técnica es la misma.
Entonces, ¿cómo elegimos entre los dos métodos? Algunas de mis sugerencias:
1. Intente utilizar robots.txt, que puede reducir la carga del sitio web (aunque es muy pequeña, jaja), porque después de que la araña vea el archivo robots.txt, ya no solicitará páginas relacionadas bloqueadas y si usted; use el método meta, la araña primero debe solicitar la página y luego tomar la decisión de no recuperarla. En este momento, la solicitud Http se ha enviado y, además, se han desperdiciado demasiados recursos del lado del servidor; meta está bloqueado, también hará que la araña tenga un impacto negativo en la impresión del sitio web, reduzca o abandone la recuperación e inclusión del sitio web;
2. La coincidencia del texto robots.txt es de izquierda a derecha, por lo que aquí no hay coincidencias regulares. Entonces, a veces tenemos que usar el método meta. Como la URL al principio de nuestro artículo:
http://www.freeflying.com/blog/231.html
http://www.freeflying.com/news/231.html
Finalmente, algunas notas:
1. No utilice la misma palabra clave y descripción en todas las páginas. Este es un error que podemos cometer fácilmente. Aunque artículos.aspx es una página, después de agregar los parámetros de URL, se convierten en miles de páginas. en la página, entonces miles de páginas tendrán la misma palabra clave y descripción.
2. Intente evitar el uso de SessionID basado en URL. Cuando ASP.NET desactiva las cookies en el cliente, puede configurar un SessionID basado en URL con un efecto similar:
http://www.freeflying.com/(S(c3hvob55wirrndfd564))/articles.aspx