2011-04-16 64 views
1

我想將爲www.domain.com/sitemap.xml製作的網站上的每個調用重定向到控制器操作。我怎樣才能做到這一點?C#mvc3將sitemap.xml重定向到控制器操作

我已經得到這個,直到目前爲止,但狀態碼返回是一個302.我想返回200狀態,但仍然重定向/重寫到控制器操作。我問的原因是,我希望每個呼叫提到的URL重定向到一個controlleraction。控制器做了一些foo en生成一個xml站點地圖。然後,這個控制面板的輸出需要被返回。

protected void Application_BeginRequest() 
{ 
    //Check if an call for the sitemap.xml has been made 
    if (Request.Path == "/sitemap.xml") 
    { 
     Response.RedirectToRoute("XmlSitemap"); 
    } 
} 

回答

4

您可以使用MVC的路由功能來實現這一目標:

routes.MapRoute(
    "Sitemap", 
    "sitemap.xml", 
    new { controller = "Home", action = "Sitemap" } 
); 

有了這個寄予放置在您的Global.asax文件,以domain.com/sitemap.xml所有請求都將被路由到主頁控制器的Sitemap操作。

+0

愚蠢的我,路由可以已經捕捉到的網址,並將其重定向到正確的控制器。以這種方式爲我自己創造不必要的困難。謝謝! – Rob 2011-04-16 15:46:29

+0

以某種形式發生在每個人身上。 :) – 2011-04-16 15:47:51

+0

但第二次,生成的sitemap.xml被調用。我如何強制重新創建新的站點地圖? – Azarsa 2015-03-02 15:11:03

相關問題