ASP.NETサイトマップ作成

10561 ワード

多くの個人駅長はツールを使って自分のサイトのサイト地図を生成します.このような欠点は、サイトのsitemapがタイムリーに更新されないことです.私たちが新しい文章を発表したとき、ウェブサイトの地図を更新し、検索エンジンのウェブサイトの地図が変わったことを通知しなければなりません.
まず、ASP.で見てみましょう.NETでどのようにウェブサイトの地図を生成しますか.最初のステップでは、次のようにノードを作成します.
/// <summary>
///     
/// </summary>
/// <param name="strUrl">    </param>
/// <param name="dLastMod">      </param>
/// <param name="strChangeFreq">    </param>
/// <returns>    </returns>
private static XmlNode CreateNode(string strUrl,
    DateTime dLastMod, string strChangeFreq)
{
    XmlNode xNodeUrl = xd.CreateElement("url");

    XmlNode nodeLoc = xd.CreateElement("loc");
    nodeLoc.InnerText = strUrl;
    xNodeUrl.AppendChild(nodeLoc);

    XmlNode nodeLastMod = xd.CreateElement("lastmod");
    nodeLastMod.InnerText = dLastMod.ToString("yyyy-MM-ddThh:mm:ss+00:00");
    xNodeUrl.AppendChild(nodeLastMod);

    XmlNode nodeChangeFreq = xd.CreateElement("changefreq");
    nodeChangeFreq.InnerText = strChangeFreq;
    xNodeUrl.AppendChild(nodeChangeFreq);

    return xNodeUrl;
}

 
次に、上記の方法を呼び出して、Webサイトの文章を遍歴し、Webサイトの地図を出力します.
static XmlDocument xd = new XmlDocument();

/// <summary>
///    Sitemap
/// </summary>
/// <param name="article">List<Article></param>
public static void WriteSitemap(List<Article> article)
{
    string strFile = HttpRuntime.AppDomainAppPath + "xml/sitemap.xml";
    XmlNode rootNode = xd.CreateElement("urlset");

    XmlAttribute attrXmlNS = xd.CreateAttribute("xmlns");
    attrXmlNS.InnerText = "http://www.sitemaps.org/schemas/sitemap/0.9";
    rootNode.Attributes.Append(attrXmlNS);

    //     
    rootNode.AppendChild(CreateNode("http://www.lidongkui.com/", DateTime.Now, "daily"));

    //        <url></url>
    foreach (Article a in article)
    {
        rootNode.AppendChild(CreateNode("http://www.lidongkui.com/" + a.UrlName, a.AddTime, "monthly"));
    }
    xd.AppendChild(rootNode);
    xd.InsertBefore(xd.CreateXmlDeclaration("1.0", "UTF-8", null), rootNode);

    xd.Save(strFile);
}

 
最後に、記事を取得し、Webサイトの地図を出力する方法を呼び出すだけです.
XML.WriteSitemap(db.Articles .OrderByDescending(m => m.ID) .ToList() );

ここまで来てウェブサイトの地図を出力することに成功して、しかしウェブサイトの地図を出力した後に検索エンジンは直ちに私達のウェブサイトの地図の変化を発見することができなくて、この時私達は各検索エンジンをpingする必要があって、方法は以下の通りです:
//google
System.Net.WebRequest reqGoogle = System.Net.WebRequest
    .Create("http://www.google.com/webmasters/tools/ping?sitemap=" +
    HttpUtility.UrlEncode("http://www.lidongkui.com/xml/sitemap.xml"));
reqGoogle.GetResponse();

//ask
System.Net.WebRequest reqAsk = System.Net.WebRequest
    .Create("http://submissions.ask.com/ping?sitemap=" +
    HttpUtility.UrlEncode("http://www.lidongkui.com/xml/sitemap.xml"));
reqAsk.GetResponse();

//yahoo
System.Net.WebRequest reqYahoo = System.Net.WebRequest
    .Create("http://search.yahooapis.com/SiteExplorerService/V1/updateNotification?appid=YahooDemo&url=" +
    HttpUtility.UrlEncode("http://www.lidongkui.com/xml/sitemap.xml"));
reqYahoo.GetResponse();

//bing
System.Net.WebRequest reqBing = System.Net.WebRequest
    .Create("http://www.bing.com/webmaster/ping.aspx?siteMap=" +
    HttpUtility.UrlEncode("http://www.lidongkui.com/xml/sitemap.xml"));
reqBing.GetResponse();

 
これらの方法を使用して、新しい文章を発表した後、私たちのウェブサイトの地図をタイムリーに更新し、検索エンジンに私たちのウェブサイトの地図が変化したことを知らせ、SEOに有利になります.
変換元:http://www.lidongkui.com/create-sitemap