【问题标题】:Dynamically Generating sitemap.xml动态生成sitemap.xml
【发布时间】:2012-04-21 19:23:23
【问题描述】:

我已经使用here 描述的技术实现了一个动态生成的站点地图。

由于我的网站是一个 WebForms 应用程序,因此我的站点地图 URL 最终为 www.mydomain.com/Sitemap.aspx。

这很好用,我可以使用搜索引擎网站管理员工具告诉他们我的站点地图的 URL。但是,较小的搜索引擎可能不知道在哪里可以找到此文件。如果我的动态生成的站点地图可以位于 www.mydomain.com/sitemap.xml 会更好。这是站点地图的标准 URL。

生成我现在所做的相同站点地图数据的最简单方法是什么,但将其显示为文件 sitemap.xml。我可以使用路由来完成,还是需要自定义 HTTP 处理程序?

我正在使用网络表单,但也有使用 ASP.NET MVC 的网站,所以我非常有兴趣找到在这两个平台上执行此操作的最佳技术。

【问题讨论】:

    标签: asp.net-mvc webforms sitemap


    【解决方案1】:

    对于Webforms,你可以使用HttpModule,查看UrlRewriting.NET

    对于 MVC,使用路由:

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

    【讨论】:

    • 嗯... MVC 解决方案在这里似乎很理想。 Webforms 解决方案,不是很多(需要 IIS 运行的第三方控件,并且可能会或可能不会在 ASP.NET 的未来版本中工作)。我确实计划将站点重写为 MVC,但不会很快。谢谢。
    • 如果 OP 使用 IIS 7 或更高版本,则 Web 服务器有一个本机 Url rewrite。它更方便。没有编码。只需 web.config 中的几行代码。
    • @Oybek 是的,我们正在使用最新的软件。看起来这对我很感兴趣。 (虽然我使用的是共享主机,可能无法访问所有 IIS 设置。)谢谢。
    • 其次,如果你有IIS7+,使用Url Rewrite
    【解决方案2】:

    对于 Webforms,您还可以如上所述更新您的 web.config,您只需使用纯 aspx 或 ascx 页面,然后使用 rewrite 进行魔术 :-)(我使用 .net 4.0)

    例如

    <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>
    

    【讨论】:

    • 这看起来很有希望,但我无法让它发挥作用。这个特定的站点仍然是使用 Visual Studio 2010 构建的。我不知道这是否与它有关。
    • 无论如何,我玩过这个,routes.MapPageRoute("Sitemap", "Sitemap.xml", "~/Sitemap.aspx"); 似乎工作正常。仍在测试中...
    • 我安装了 URL Rewrite 并使用了这个 XML 并忽略了 Visual Studio 警告,效果很好。
    猜你喜欢
    • 2019-05-15
    • 1970-01-01
    • 2012-10-16
    • 2012-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-04
    相关资源
    最近更新 更多