自动为所有控制器生成站点地图

时间:2014-03-27 12:00:26

标签: c# asp.net-mvc mvcsitemapprovider

我正在尝试为我的Asp.Net Mvc 5网站自动创建sitemap.xml文件。我已经安装了Nuget的MvcSiteMapProvider.MVC5 4.6.1包,我已经阅读了入门指南。据我所知,我必须将 ALL 控制器及其操作添加到其配置文件中。但是,在文档的某个地方,它表示该软件包会自动跟踪访问过的URL并在sitemap.xml中生成他们的节点,#34;免费"!我访问了几页并刷新了sitemap.xml文件,但它没有改变。我错过了什么吗?此软件包是否真的提供了动态sitemap.xml文件?

1 个答案:

答案 0 :(得分:2)

首先,\sitemap.xml端点不是"文件",它是一个控制器操作,它根据SiteMap的配置动态生成XML 。它根据sitemaps.org生成要提交给搜索引擎的XML。

由于此端点适用于搜索引擎,因此跟踪用户在网站上的访问并显示用户在此结果中访问过的网页没有任何意义。相反,它包含所有配置的页面(通过URL或控制器,操作和其他路由值)。

但是,MvcSiteMapProvider的主要目的是为各个页面提供菜单和痕迹痕迹。同样,这不通过跟踪用户的位置来工作,而是通过确定SiteMap内URL的相对位置(相对于其他节点)来工作。有关详细信息,请阅读How to Make MvcSiteMapProvider Remember a User's Position

您不必将所有控制器操作添加到MvcSiteMapProvider,从技术上讲,您只需添加搜索引擎索引所需的URL。然后您可以免费获得站点地图XML。

但是,对于您不需要编入索引的网页(例如,管理页面),可以使用preservedRouteParameters[TitleAttribute]ISiteMapNodeVisibilityProvider的组合来伪造痕迹痕迹,这样你就不必为数据库中的每条记录添加一个节点,使其发挥作用,如上文所述。