• ASP.NET 创建网站地图


    很多个人站长会使用工具来生成自己网站的站点地图,这样做的缺点在于网站的 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;
    }

    接下来调用上边的方法,遍历网站文章,输出网站地图:

    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);
    }

    最后,只需要获取文章,调用方法输出网站地图:

    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

  • 相关阅读:
    KindEditor的使用
    python过滤文件中特殊标签
    django中orm的简单操作
    django中models联合唯一unique_together
    博客当中的文章分类以及归档
    zabbix前端添加平台脚本监控
    django重写form表单中的局部钩子函数
    input获取、失去焦点对输入内容做验证
    django admin后台的简单使用
    django中博客后台将图片上传作为用户头像
  • 原文地址:https://www.cnblogs.com/mrma/p/3981633.html
Copyright © 2020-2023  润新知