我想在我的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
不
答案 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>