2012-04-21 219 views
4

我已經使用描述的技術here實現了動態生成的站點地圖。動態生成sitemap.xml

由於我的網站是一個WebForms應用程序,我的網站地圖網址最終爲www.mydomain.com/Sitemap.aspx。

這是行之有效的,我可以使用搜索引擎網站管理員工具告訴他們我的網站地圖的網址。然而,較小的搜索引擎可能不知道在哪裏找到這個文件。如果我的動態生成的站點地圖可能位於www.mydomain.com/sitemap.xml,會更好。這是網站地圖的標準網址。

什麼是最簡單的方法來生成相同的站點地圖數據我現在做,但它有文件sitemap.xml。我可以使用路由嗎,還是我需要一個自定義的HTTP處理程序?

我使用webforms,但也有使用ASP.NET MVC的網站,所以我非常感興趣的是在兩個平臺上找到最好的技術。

回答

9

對於Web表單,您可以使用HTTP模塊,檢查出UrlRewriting.NET

對於MVC,使用路由:

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

嗯...... MVC解決方案在這裏看起來很理想。 Webforms解決方案並不是那麼多(需要IIS運行的第三方控件,可能會或可能不適用於ASP.NET的未來版本)。我打算將網站改寫爲MVC,但不會很快。謝謝。 – 2012-04-21 19:40:48

+0

如果OP使用IIS 7或更高版本,則Web服務器會有一個本地[Url rewrite](http://www.iis.net/download/urlrewrite)。它更方便。沒有編碼。在web.config中只需幾行。 – Oybek 2012-04-21 19:40:54

+0

@Oybek是的,我們正在使用最新的軟件。看起來這將是我感興趣的。 (儘管我使用的是共享主機,可能無法訪問所有IIS設置。)謝謝。 – 2012-04-21 19:41:45

2

對於Web表單,如上面提到的,你也可以更新你的web.config,你只需要使用普通的aspx或ascx頁面,然後重寫:-)(我使用.net 4.0)

eg

<system.webServer> 
<rewrite> 
    <rules> 
    <rule name="Main Sitemap" stopProcessing="true"> 
     <match url="^sitemap.xml"/> 
     <action type="Rewrite" url="sitemap/sitemap.aspx" appendQueryString="false"/> 
    </rule> 
    </rules> 
</rewrite> 
</system.webServer> 
+0

,則使用Url重寫這看起來很有希望,但我一直無法使其工作。這個特定的網站仍然使用Visual Studio 2010構建。我不知道這是否與它有關。 – 2012-10-30 14:59:27

+0

無論如何,我玩這個和'routes.MapPageRoute(「Sitemap」,「Sitemap.xml」,「〜/ Sitemap.aspx」);'似乎工作正常。仍然在測試...... – 2012-10-30 15:09:40

+0

我安裝了URL Rewrite並使用了這個XML,並忽略了Visual Studio的警告,它工作得很好。 – 2014-05-15 01:00:57