我们有一个网站;到目前为止只有HTML页面。现在我们正在ASP .Net重新开发它。
这意味着所有.html页面都将更改为.aspx扩展名。问题是,对这些页面有很多外部引用,我们不想立即将每个链接转换为aspx。
有没有办法将.html页面的链接重定向到.aspx页面?例如,有没有办法服务器检查指定的文件,发现它链接到.html页面并自动打开.aspx页面?
答案 0 :(得分:3)
我会借此机会将扩展名(.html,.aspx等)留在后面。
对于我们所有的主要网站,我们现在使用自定义映射系统,其中虚拟页面URI映射到特定的.aspx(or.html)页面。这有一些好处:
我们有自己的自定义系统,但我相信ASP.NET MVC现在内置了这个功能。
(如果沿着这条路线前进,可以为指向新.aspx页面的.html URI添加遗留映射。)
答案 1 :(得分:1)
如果你进行某种url重写,你可以让所有的链接保持不变,只是提供aspx页面,请求index.html被映射到index.aspx
这是ms关于asp.net url重写的内容:
答案 2 :(得分:1)
您可能希望查看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
答案 3 :(得分:0)
以下是我们处理类似情况的方法。
设置IIS以将html扩展名映射到ASP.Net,而不是直接处理它。
在HttpApplication.BeginRequest处理程序中,查看是否正在为已迁移到aspx的html文件发出请求,然后通过重定向响应来提供aspx页面。
如果尚未映射html文件,只需提供静态html文件。
答案 4 :(得分:0)
就像stusmith所说,你不应该让你的底层技术暴露(当然也不会强制要求)你的URI看起来像什么。最好的方法是如上所述,根本没有显示任何扩展,但在目前的情况下,可能会以这样的方式配置系统:.html文件就像它们是.aspx一样?
我不知道关于.NET的第一件事,但我认为这是可能的,而不必经历太多的箍。
第二种最好的方法是重写URI,但这需要额外的服务器工作(不多,但它加起来)。
(不要使用元刷新重定向。其他所有解决方案都更好。)