我正在尝试为特定的asp.net网站动态生成sitemap.xml.
我找到了几个解决方案:
chinookwebs
cervoproject
newtonking
Chinookwebs工作得很好,但现在似乎有点不活跃,并且不可能个性化每个页面的"priority"和"changefreq"标签,它们都从配置文件继承了相同的值.
你们用什么解决方案?
通常,您将使用HTTP处理程序.鉴于要求......
http://www.yoursite.com/sitemap.axd
...您的处理程序将使用格式化的XML站点地图进行响应.无论是动态生成站点地图,还是从数据库生成站点地图,还是其他方法都取决于HTTP Handler实现.
这大致是它的样子:
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(); }
这段代码可以改进,但这是基本的想法.