2012-04-21 280 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