Функция карты сайта заключается в том, чтобы позволить поисковым системам как можно быстрее включать больше различных веб-страниц веб-сайта.
Здесь мы должны сначала понять основной принцип — метод сканирования поисковых систем. Весь Интернет подобен перекрещивающейся «сети»: каждый узел сети представляет собой каждую веб-страницу, и каждая веб-страница связана друг с другом посредством URL-адресов. Паук может начать с одной веб-страницы и переползти на другую веб-страницу по URL-адресу на веб-странице, а затем перейти на другие веб-страницы по URL-адресу на другой веб-странице... и так далее. Но если это недавно выпущенный веб-сайт, на него может не быть другого URL-адреса, поэтому он никогда не будет «сканирован» (включен). Чтобы решить эту проблему, новый веб-сайт может активно отправлять URL-адрес поисковой системе и подавать заявку на его сканирование пауками (URL-адрес приложения Google:), но обычно при подаче заявки будет отправлен только URL-адрес домашней страницы.
Чтобы все URL-адреса (особенно динамически генерируемые) могли быстро и легко быть найдены пауками, нам необходимо предоставить всеобъемлющую, полную, четкую структуру и своевременно обновляемую карту сайта.
А чтобы справиться с файлом robots.txt с дублирующимся контентом, мы используем файл .ashx для создания карты сайта в формате xml на основе sitemaps.org. После создания карты сайта мы можем отправить ее в поисковые системы, такие как Google. Большое количество статей подтверждают, что отправка карты сайта значительно улучшит скорость и глубину включения веб-сайта. Почти все другие методы SEO могут быть труднодоказуемыми, неэффективными или даже вызывать побочные эффекты, за исключением отправки карты сайта!
Linq to XML дает нам почти идеальный опыт работы.
<%@ WebHandler Language="C#" Class="website" %>
использование системы;
использование System.Web;
использование System.Xml;
используя System.Xml.Linq;
используя System.Linq;
веб-сайт общедоступного класса: IHttpHandler {
public void ProcessRequest (контекст HttpContext) {
context.Response.ContentType = "текст/xml";
//Информация объявления файла. Значение yes третьего автономного параметра указывает, что этот XML-документ является автономным и не зависит от внешнего DTD.
Объявление XDeclaration = new XDeclaration("1.0", "UTF-8", "да");
context.Response.Write(объявление);
//Пространство имен XML-файла
XNamespace ns = " http://www.google.com/schemas/sitemap/0.84 ";
XElement siteMap = новый XElement(ns + "urlset");
строка фиксированныйUrl = " http://www.freeflying.com/article ";
строка WholeUrl = String.Empty;
//Извлекаем данные и преобразуем их в узлы XML
foreach (элемент var в Articles.GetArticles())
{
XElement url = новый XElement("url");
WholeUrl = string.Format("{0}?id={1}&catelog={2}",fixedUrl,item.ID,item.Catelog);
XElement loc = новый XElement("loc", WholeUrl);
XElement Lastmod = новый XElement("lastmod", item.LastMod.AddDays(-23).ToShortDateString());
XElementchangefreq = новый XElement("changefreq", item.Frequency);
Приоритет XElement = новый XElement("приоритет", item.Weight);
url.Add(loc, Lastmod, ChangeFreq, Priority);
siteMap.Add(url);
}
//Наконец выводим весь XML-файл
context.Response.Write(карта сайта);
}
общественный bool IsReusable {
получать {
вернуть ложь;
}
}
}
Технология XML также будет использоваться в RSS.
<%@ WebHandler Language="C#" Class="rss" %>
использование системы;
использование System.Web;
использование System.Xml;
используя System.Xml.Linq;
публичный класс rss: IHttpHandler {
public void ProcessRequest (контекст HttpContext) {
context.Response.ContentType = "текст/xml";
context.Response.Write("<?xml version="1.0"coding="UTF-8" ?>");
XElement rssFeed = новый XElement("rss", новый XAttribute("версия","2.0"));
строка фиксированныйUrl = " http://www.freeflying.com/article ";
строка целикомUrl = string.Empty;
Канал XElement = новый XElement("канал",
новый XElement("title", "свободный полет"),
новый XElement("ссылка", фиксированныйUrl),
new XElement("описание","сайт для свободного полета мечты"),
новый XElement("pubDate",DateTime.Now.ToString())
);
foreach (var статья в Articles.GetArticles())
{
XElement item = новый XElement("элемент");
XElement title = новый XElement("title",article.Title);
WholeUrl = string.Format("{0}?id={1}&catelog={2}", фиксированныйUrl,article.ID,article.Catelog);
ссылка XElement = новый XElement("ссылка", WholeUrl);
Описание XElement = новый XElement("описание", статья.Описание);
XElement pubDate = новый XElement("pubDate",article.LastMod.ToString());
item.Add(title,link,description,pubDate);
канал.Добавить(пункт);
}
rssFeed.Add(канал);
context.Response.Write(rssFeed);
}
общественный bool IsReusable {
получать {
вернуть ложь;
}
}
}
смоделированные данные
использование системы;
использование System.Data;
использование System.Configuration;
используя System.Linq;
использование System.Web;
использование System.Web.Security;
использование System.Web.UI;
использование System.Web.UI.HtmlControls;
использование System.Web.UI.WebControls;
использование System.Web.UI.WebControls.WebParts;
используя System.Xml.Linq;
использование System.Web.UI.MobileControls;
использование System.Collections.Generic;
/// <сводка>
/// Краткое описание статей
/// </сводка>
Публичный классСтатьи
{
публичные статьи()
{
//
// ЗАДАЧА: добавить сюда логику конструктора
//
}
общедоступный статический список <Статья> GetArticles()
{
вернуть новый список<статья>(){
новая статья(234, "блог", DateTime.Now.AddDays(-23), Freq.none, 0.8, "asp.net seo", "статьи о SEO в asp.net"),
новая статья(267, "блог", DateTime.Now.AddDays(-245), Freq.daily, 0.6, "ado.net pro","об использовании набора данных"),
новая статья(653, "новости", DateTime.Now.AddDays(-45), Freq.daily, 1, "CLR через C#", "записная книжка об этой книге")
};
}
}
Публичный класс Статья
{
общедоступный международный идентификатор;
общедоступная строка Каталог;
публичный DateTime LastMod;
общественный двойной вес;
общедоступная частота;
общедоступная строка Название;
общедоступная строка Описание;
общедоступная статья (int id, строковый каталог, DateTime LastMod, частота Freq, двойной вес, заголовок строки, описание строки)
{
идентификатор = идентификатор;
Каталог = каталог;
ЛастМод = ПоследнийМод;
Вес = вес;
Частота = частота;
Название = заголовок;
Описание = описание;
}
}
общедоступное перечисление Freq
{
нет = 1,
ежедневно = 2,
еженедельно = 3,
}
Автор: Free Fly Оригинальная ссылка