如果htm或html页面不存在,则检查aspx页面是否存在

时间:2012-07-15 22:03:07

标签: asp.net redirect global-asax

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

我怎么能这样做一次?

干杯

2 个答案:

答案 0 :(得分:0)

假设您正在使用IIS,那么请查看URL Rewrite,这样您就可以轻松地将.html的所有请求转换为.aspx

答案 1 :(得分: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重写

但你也可以通过代码实现这一点,通过为传入请求实现IHttpHanlder接口编写自己的httphandler,在你的情况下,如果请求.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