La función del mapa del sitio es permitir que los motores de búsqueda incluyan más páginas web del sitio web lo más rápido posible.
Aquí primero debemos comprender un principio básico: el método de rastreo de los motores de búsqueda. Todo Internet es como una "red" entrecruzada: cada nodo de la red es cada página web, y cada página web está conectada entre sí a través de URL. Una araña puede comenzar desde una página web y rastrear a otra página web a través de la URL de esa página web; luego rastrear a más páginas web a través de la URL de otra página web... y así sucesivamente. Pero si se trata de un sitio web recién lanzado, es posible que no haya otra URL que apunte a él, por lo que nunca será "rastreado" (incluido). Para resolver este problema, el nuevo sitio web puede enviar activamente la URL al motor de búsqueda y solicitar que las arañas la rastreen (URL de la aplicación de Google:), pero generalmente solo se enviará la URL de una página de inicio al realizar la solicitud.
Para que las arañas recuperen rápida y fácilmente todas las URL (especialmente las generadas dinámicamente), debemos proporcionar una estructura completa, clara y un mapa del sitio actualizado oportunamente.
Y para lidiar con el archivo robots.txt de contenido duplicado, usamos el archivo .ashx para generar un mapa del sitio en formato xml basado en sitemaps.org. Una vez generado el mapa del sitio, podemos enviarlo a motores de búsqueda como Google. Una gran cantidad de artículos confirman que enviar un mapa del sitio mejorará en gran medida la velocidad y profundidad de la inclusión del sitio web. Casi todos los demás métodos de SEO pueden ser difíciles de probar, ineficaces o incluso causar efectos secundarios, ¡a excepción del envío de un mapa del sitio!
Linq to XML nos brinda una experiencia operativa casi perfecta.
<%@ WebHandler Language="C#" Class="sitio web" %>
usando Sistema;
usando System.Web;
usando System.Xml;
usando System.Xml.Linq;
usando System.Linq;
sitio web de clase pública: IHttpHandler {
ProcessRequest pública vacía (contexto HttpContext) {
contexto.Response.ContentType = "texto/xml";
//Información de declaración del archivo. El valor sí del tercer parámetro independiente indica que este documento XML es autónomo y no depende de una DTD definida externamente.
Declaración XDeclaration = nueva XDeclaration("1.0", "UTF-8", "sí");
contexto.Respuesta.Escribir(declaración);
//Espacio de nombres del archivo XML
XNamespace ns = " http://www.google.com/schemas/sitemap/0.84 ";
XElement siteMap = nuevo XElement(ns + "urlset");
cadena URL fija = " http://www.freeflying.com/article ";
cadena URL completa = cadena.Vacío;
//Recorre los datos y conviértelos en nodos XML
foreach (elemento var en Articles.GetArticles())
{
URL de XElement = nueva XElement("url");
WholeUrl = string.Format("{0}?id={1}&catelog={2}",fixedUrl,item.ID,item.Catelog);
XElement loc = nuevo XElement("loc", WholeUrl);
XElement lastmod = new XElement("lastmod", item.LastMod.AddDays(-23).ToShortDateString());
XElement changefreq = new XElement("cambiofreq", item.Frequency);
Prioridad XElement = new XElement("prioridad", elemento.Peso);
url.Add(loc, lastmod, changefreq, prioridad);
mapa del sitio.Agregar(url);
}
//Finalmente generamos el archivo xml completo
contexto.Respuesta.Escribir(mapa del sitio);
}
bool público es reutilizable {
conseguir {
devolver falso;
}
}
}
La tecnología XML también se utilizará en RSS
<%@ WebHandler Language="C#" Class="rss" %>
usando Sistema;
usando System.Web;
usando System.Xml;
usando System.Xml.Linq;
rss de clase pública: IHttpHandler {
ProcessRequest pública vacía (contexto HttpContext) {
contexto.Response.ContentType = "texto/xml";
context.Response.Write("<?xml version="1.0" codificación="UTF-8" ?>");
XElement rssFeed = nuevo XElement("rss", nuevo XAttribute("versión","2.0"));
cadena URL fija = " http://www.freeflying.com/article ";
cadena URL completa = cadena.Vacío;
Canal XElement = nuevo XElement("canal",
nuevo XElement("título", "vuelo libre"),
nuevo XElement("enlace", URL fija),
new XElement("descripción","el sitio web para soñar volando libremente"),
nuevo XElement("pubDate",DateTime.Now.ToString())
);
foreach (var artículo en Articles.GetArticles())
{
Elemento XElement = nuevo XElement("elemento");
Título XElement = nuevo XElement("título", artículo.Título);
WholeUrl = string.Format("{0}?id={1}&catelog={2}", URL fija, artículo.ID, artículo.Catelog);
Enlace XElement = nuevo XElement("enlace", URL completa);
Descripción de XElement = new XElement("descripción", artículo.Descripción);
XElement pubDate = new XElement("pubDate", artículo.LastMod.ToString());
item.Add(título,enlace,descripción,fecha de publicación);
canal.Agregar(elemento);
}
rssFeed.Add(canal);
contexto.Respuesta.Write(rssFeed);
}
bool público es reutilizable {
conseguir {
devolver falso;
}
}
}
datos simulados
usando Sistema;
usando System.Data;
usando System.Configuration;
usando System.Linq;
usando System.Web;
utilizando System.Web.Security;
utilizando System.Web.UI;
usando System.Web.UI.HtmlControls;
usando System.Web.UI.WebControls;
usando System.Web.UI.WebControls.WebParts;
usando System.Xml.Linq;
usando System.Web.UI.MobileControls;
usando System.Collections.Generic;
/// <resumen>
/// Descripción resumida de los artículos
/// </summary>
clase públicaArtículos
{
artículos públicos()
{
//
// TODO: Agregar lógica de constructor aquí
//
}
Lista estática pública <Artículo> GetArticles()
{
devolver nueva Lista<Artículo>(){
nuevo artículo(234, "blog", DateTime.Now.AddDays(-23), Freq.none, 0.8, "asp.net seo", "artículos sobre SEO en asp.net"),
nuevo artículo(267, "blog", DateTime.Now.AddDays(-245), Freq.daily, 0.6, "ado.net pro", "acerca del uso del conjunto de datos"),
nuevo artículo(653, "noticias", DateTime.Now.AddDays(-45), Freq.daily, 1, "CLR vía C#", "cuaderno sobre este libro")
};
}
}
artículo de clase pública
{
identificación interna pública;
Categoría de cadena pública;
fecha y hora pública LastMod;
público doble Peso;
frecuencia pública Frecuencia;
Título de cadena pública;
Descripción de cadena pública;
Artículo público (int id, categoría de cadena, DateTime lastMod, frecuencia de frecuencia, doble peso, título de cadena, descripción de cadena)
{
identificación = identificación;
Categoría = categoría;
ÚltimoMod = últimoMod;
Peso = peso;
Frecuencia = frecuencia;
Título = título;
Descripción = descripción;
}
}
frecuencia de enumeración pública
{
ninguno = 1,
diario = 2,
semanal = 3,
}
Autor: Free Fly Enlace original