【问题标题】:Generate sitemap on the fly即时生成站点地图
【发布时间】:2010-09-05 18:40:21
【问题描述】:

我正在尝试为特定的 asp.net 网站动态生成 sitemap.xml。

我找到了几个解决方案:

  1. chinookwebs
  2. cervoproject
  3. newtonking

Chinookwebs 运行良好,但现在似乎有点不活跃,并且无法个性化每个页面的“priority”和“changefreq”标签,它们都从配置文件继承相同的值。

你们使用什么解决方案?

【问题讨论】:

标签: .net asp.net sitemap


【解决方案1】:

用于生成站点地图的自定义处理程序。

【讨论】:

  • 处理程序会处理对应用程序的每个 http 请求并即时重新生成 sitemap.xml,这就是您的意思吗?
【解决方案2】:

使用 ASP.NET MVC 只需使用 .NET XML 生成库快速编写一段代码,然后将其传递给具有 XML 控件的视图页面。在代码隐藏中,我将控件与 ViewData 绑定在一起。这似乎覆盖了视图页面的默认行为以呈现不同的标题。

【讨论】:

    【解决方案3】:

    通常您会为此使用HTTP Handler。给定一个请求...

    http://www.yoursite.com/sitemap.axd

    ...您的处理程序将以格式化的 XML 站点地图进行响应。该站点地图是动态生成的,还是从数据库生成的,还是其他方法取决于 HTTP 处理程序的实现。

    大致如下:

    void IHttpHandler.ProcessRequest(HttpContext context)
    {
        //
        // Important to return qualified XML (text/xml) for sitemaps
        //
        context.Response.ClearHeaders();
        context.Response.ClearContent();
        context.Response.ContentType = "text/xml";
        //
        // Create an XML writer
        //
        XmlTextWriter writer = new XmlTextWriter(context.Response.Output);
        writer.WriteStartDocument();
        writer.WriteStartElement("urlset", "http://www.sitemaps.org/schemas/sitemap/0.9");
        //
        // Now add entries for individual pages..
        //
        writer.WriteStartElement("url");
        writer.WriteElementString("loc", "http://www.codingthewheel.com");
        // use W3 date format..
        writer.WriteElementString("lastmod", postDate.ToString("yyyy-MM-dd"));
        writer.WriteElementString("changefreq", "daily");
        writer.WriteElementString("priority", "1.0");
        writer.WriteEndElement();
        //
        // Close everything out and go home.
        //
        result.WriteEndElement();
        result.WriteEndDocument();
        writer.Flush();
    }
    

    此代码可以改进,但这是基本思想。

    【讨论】:

      猜你喜欢
      • 2017-11-29
      • 2015-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-03
      • 2021-07-12
      相关资源
      最近更新 更多