我们仍然有很多传入的网址指向我们旧的.asp网页。新的.aspx页面被称为与旧的.asp页面相同,并且大多数都接受相同的值,因此它们几乎可以互换。不幸的是,我们仍然向旧的.asp页面提供POST和GET请求。 我们在Asp.Net 2.0应用程序中处理了这些.asp请求,方法是在我们的web.config(system.webserver部分)中添加:
<handlers>
<add name="ASPClassicForRedirectToASPX"
path="*.asp"
verb="*"
modules="IsapiModule"
scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll"
resourceType="Unspecified"
preCondition="classicMode,runtimeVersionv4.0,bitness32" />
</handlers>
然后检查BeginRequest,如果url以.asp结尾,如果是,则执行RewritePath to .aspx
现在我们已经迁移到asp.net 4.0,我开始怀疑是否有更好的方法来处理这个问题,并且仍然保持与旧的.asp网址的向后兼容性?
答案 0 :(得分:0)
如果不是全部情况,那么我会做什么就像在BeginRequest中那样,而不是url重写(如果可能的话):
Response.Clear();
Response.Status = "301 Moved Permanently";
Response.AddHeader("Location","New-url");
Response.End();
使用301永久重定向,您将确保所有抓取工具和内容都将更改其链接到正确的链接,这将减少您经常访问.asp页面的调用。除此之外,你在某些时候仍然坚持使用旧的直接链接到你的asp页面,我猜你必须让它们离开。不能永远地支持旧东西,即使这样也会很棒:)