MVC:如何将/sitemap.xml路由到ActionResult?
我有一个SitemapActionResult覆盖了ActionResult,并在点击http://www.sprelle.no/Home/SiteMap时提供了一个SEO sitemap.xml。到现在为止还挺好。
不过,我想要的是在Google访问/sitemap.xml时提供sitemap.xml。为了实现这一点,我需要一个看到“sitemap.xml”并指向/ Home / Sitemap的路线。
如何创建此映射(在Routes表中)?
没有找到相关结果
已邀请:
3 个回复
痰嫉
请注意,路由,控制器和操作选项是硬编码的。
你换
有一个Catchall StaticFile映射,它指向
。如果你什么都不做的话,这就是你的.html请求。因此,第一步是在web.config中添加一个处理程序,它将指向
请求到
。
是处理你曾经在MVC路线中看到的无扩展名URL的处理程序,例如:
。 添加处理程序映射非常简单 - 只需打开web.config并将其添加到
节点即可。
请注意,如果您愿意,可以使路径更具体。例如,如果您只想拦截一个特定请求,则可以使用path =“sample.html” 步骤2.配置路由 接下来,您将需要一条新路线。打开
,然后打开
。我的完整
看起来像这样:
步骤3.路由现有文件 这几乎涵盖了它,但还有一件事需要处理 - 覆盖与现有文件匹配的请求。如果您有一个名为myfile.html的实际文件,则路由系统将不允许您的路由运行。我忘记了这一点,最终出现了HTTP 500错误(递归溢出)并不得不向Eilon Lipton寻求帮助。 无论如何,这很容易修复 - 只需在路由注册中添加routes.RouteExistingFiles = true即可。我完成的RegisterRoutes调用如下所示:
而已。 我通过添加此控制器操作进行测试:
捅瓶啡
在MVC应用程序中放置一个与此请求匹配的路径到ActionResult(确保将其放在默认路由之前):