2012-07-15 122 views
0

我已将我的网站从使用.htm/.html页面移至aspx页面。一些现有的网站/书签等将引用旧文件,而不是aspx文件,所以我希望它们被发送到aspx版本(我保持相同的命名)。我不想在每个页面上添加重定向代码。如果htm或html页面不存在,请检查aspx页面是否存在

我该如何做一次?

干杯

+0

什么web服务器,你运行? – dianovich 2012-07-15 22:04:57

回答

0

假设你正在使用IIS,然后看看URL Rewrite,这将给你可以轻松地查找.html的所有请求转换成的.aspx

+0

没有什么东西在global.asax中,我可以检查它是否有404错误,如果它的htm或html页面检查aspx页面是否存在,以及它是否重定向到它?我不知道如何我可以编码的 – 2012-07-15 22:53:49

+0

也我没有访问iis – 2012-07-15 22:55:21

+0

@Gazza,看看HatSoft在他的答案中谈到的HttpHandlers,看起来像你的前进方向。如果你没有访问IIS,那么你有很少的选择 – freefaller 2012-07-16 07:42:46

0

更新从OP的意见后才能:

如果你想赶上在Global.asax.cs中的错误,那么请做这种方式

protected void Application_Error(Object sender, EventArgs e) 
{ 
    HttpContext context= HttpContext.Current; 

    Exception exception = context.Server.GetLastError(); 

    int httpCode = ((HttpException)exception).GetHttpCode(); 
    if (httpCode == 404) 
    { 
     ctx.Server.RedirectPermanent("~/yournewfilename.aspx", true); 
    //For more infor on RedirectPermanent got to http://msdn.microsoft.com/en-us/library/dd322042.aspx 
    } 
} 

============否则==============

如果你想要的东西现成然后http://www.isapirewrite.com/或URL重写

但是你也可以通过代码实现这一点,写你自己的HttpHandler通过实施该IHttpHanlder接口传入的请求,并在你的情况下,它是很简单如果.htm或.html然后请求重定向到的.aspx

有用的链接,如果你决定写你自己的HttpHandler的

http://msdn.microsoft.com/en-us/library/5c67a8bd(v=vs.85).aspx

http://codebetter.com/karlseguin/2006/05/25/httphandlers-%E2%80%93-learn-them-use-them/

http://www.hanselman.com/blog/ABoilerplateHttpHandler.aspx

+0

没有什么东西在global.asax,我可以检查它是否404错误,如果它的HTM或HTML页检查,如果ASPX页面存在,如果它确实重定向到它?即时通讯不知道如何我可以编码。我也没有访问iis – 2012-07-16 02:15:44

+0

@GazzaT是的,你可以看到我更新的答案 – HatSoft 2012-07-16 07:55:19