如何自动将.html页面重新映射到.aspx页面?

问题描述:

我们有一个网站;到目前为止只有HTML页面。现在我们正在用ASP.Net重新开发它。如何自动将.html页面重新映射到.aspx页面?

这意味着所有.html页面将被改为.aspx扩展名。问题是,这些页面有很多外部引用,我们不想马上去改变aspx的每一个链接。

有什么办法可以将.html页面的链接重定向到.aspx页面吗?例如,有没有办法让服务器检查指定的文件,发现它链接到.html页面并自动打开.aspx页面?

,如果你做一些URL重写,你可以拥有所有的链接保持不变,只是起到了ASPX页面,index.html的请求被映射到的Index.aspx

这里是女士说,关于ASP .NET URL重写:

http://msdn.microsoft.com/en-us/library/ms972974.aspx

+0

你能详细一点?我很抱歉,但我是初学者。 :) – nullDev 2008-10-16 12:10:21

我想借此机会离开扩展(html的,的.aspx等)的后面。

对于我们所有的主要网站,我们现在都使用自定义映射系统,即将虚拟页面URI映射到特定的.aspx(or.html)页面。这有几个好处:

  • 您的访问者看到“更好”的URI;
  • 您可以自由地重新组织您的网站,因为您认为适合,在幕后,而不会破坏现有的传入链接;
  • 您可以使用动态虚拟的URI,例如代替/Product.aspx?p=Blah的,你可以使用/产品/布拉赫

我们有自己定制的系统,但我相信ASP.NET MVC现在内置此功能。

(如果你沿着这条路线走,你可以为指向你新的.aspx页面的.html URIs添加旧映射)。

以下是我们处理类似情况的方法。

  1. 设置IIS以将html扩展映射到ASP.Net,而不是直接处理它。

  2. 在HttpApplication.BeginRequest处理程序中,查看是否为已经迁移到aspx的html文件发出请求,如果是,则通过重定向响应来发送aspx页面。

  3. 如果html文件还没有被映射,只是提供静态html文件。

就像stusmith一样,你不应该让你的底层技术暴露(当然不是强制)你的URI的样子。最好的方法是提到根本不显示任何扩展名,但在目前的情况下,可能以这样的方式配置系统,即.html文件的行为就好像它们是.aspx一样?

我不知道.NET的第一件事,但我认为这是可能的,而不必经过太多的箍。

第二个最好的方法是重写URI,但这需要额外的服务器工作(不多,但它加起来)。

(不要用元刷新重定向。每一个其他的解决办法是更好的。)

你可能想看看进入ASP.NET System.Web.Routing命名空间,向其中加入在.NET 3.5 SP1我相信:

http://blogs.msdn.com/mikeormond/archive/2008/05/14/using-asp-net-routing-independent-of-mvc.aspx

http://msdn.microsoft.com/en-us/library/system.web.routing.aspx