错误404的默认重定向

时间:2010-12-19 16:27:26

标签: asp.net http redirect default

我想在我的ASP.net网站上介绍一个功能,每当收到我域上未知URL的请求时,用户就会被重定向到应用程序根目录中的error_404.htm页面。 / p>

例如,如果请求是http://www.mydomain.com/blahblahblah

然后我没有返回标准的404错误页面,而是希望它将请求重定向到http://www.mydomain.com/error_404.htm

更新 IIS V7.5和.NET Framework第4版

更新 /blah.aspx重定向,但/blah

4 个答案:

答案 0 :(得分:62)

这是为ASP.NET和非ASP.NET请求配置自定义404错误页面的方法:

<configuration>

   <system.web>
      <compilation targetFramework="4.0" />

      <customErrors mode="On" redirectMode="ResponseRewrite">
         <error statusCode="404" redirect="http404.aspx" />
      </customErrors>
   </system.web>

   <system.webServer>
      <httpErrors errorMode="Custom">
         <remove statusCode="404"/>
         <error statusCode="404" path="/http404.aspx" responseMode="ExecuteURL"/>
      </httpErrors>
   </system.webServer>

</configuration>

正如其他人已经指出的那样,你不应该使用HTTP重定向将用户发送到主页,这不仅会让用户感到困惑,也会混淆机器(例如搜索引擎)。使用404状态代码而不是3xx代码非常重要。

您可以使用HTML上的元刷新来实现所需的功能:

<%@ Page Language="C#" %>

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
   <title>Not Found</title>
   <meta http-equiv="refresh" content="5;url=/"/>
</head>
<body>
   <h1>Not Found</h1>
   <p>Redirecting to Home...</p>
</body>
</html>

答案 1 :(得分:4)

您可以通过在web.config中添加customErrors部分,将用户指向自定义404。

<customErrors mode="On" defaultRedirect="~/errors/GeneralError.aspx">
     <error statusCode="404" redirect="~/errors/PageNotFound.aspx" />
</customErrors>

正如其他人在上述评论中所述,将用户送回主页不仅令人讨厌,而且功能上也令人困惑。

我的建议是将用户发送到一个页面,该页面向他们提供有关发生的事情的信息,并为他们提供下一步(浏览其他产品,返回仪表板等)。

答案 2 :(得分:2)

在我的情况下改变&#34; ResponseRewrite&#34;到&#34; ResponseRedirect&#34;工作:

我的MVC Webconfig文件配置:     

   <system.web>
      <compilation targetFramework="4.0" />
      <customErrors mode="On" redirectMode="ResponseRedirect">
         <error statusCode="404" redirect="~/Home/Login" />
      </customErrors>
   </system.web>
</configuration>

答案 3 :(得分:1)

这对我有用。我只是在代码<system.webServer>

之间加入此代码
 <httpErrors errorMode="Custom">
      <remove statusCode="404"/>
      <error statusCode="404" path="~/Erro/PaginaNaoEncontrada.aspx" responseMode="Redirect"/>
    </httpErrors>