如何将404(错误的URL)重定向到主页

5
我正在使用asp.net,当我手动输入错误的url(在浏览器中)时,会出现以下提示:
找不到资源。 描述:HTTP 404。您要查找的资源(或其某个依赖项)可能已被删除、更改了名称或暂时不可用。请检查下面的URL,确保拼写正确。
我希望不存在的错误url能被重定向到主页。
我该如何实现这一功能?我正在使用网站地图。
4个回答

8

如果您不想让用户知道他们被重定向了,那么可以打开自定义错误,并执行以下操作:

<configuration>
  <system.web>
    <customErrors defaultRedirect="default.aspx" mode="On">
      <error statusCode="404" redirect="default.aspx"/>
    </customErrors>
  </system.web>
</configuration>

2

正如其他人已经回答的那样,web.config 是一种方式。

另一种方法是从应用程序内部捕获未处理的异常。这样可以更好地控制重定向。

protected void Application_Error(object sender, EventArgs e)
{
    HttpException httpException = Server.GetLastError() as HttpException;
    if (httpException.GetHttpCode() == 404)
       Response.Redirect("/MainPage.aspx");
}

请记住,如果您创建自己的 404 页面,您必须:

  • 手动将 404 代码添加到响应中。
  • 保持响应主体大于 512 字节,否则浏览器将显示其默认的错误消息。

部署到服务器上时无法工作。 - Abhishek
你实际上需要使用 httpException.GetHttpCode == 404 - QFDev

1
请将以下代码添加到您的web.config文件中:
<customErrors mode="On" defaultRedirect="{yourDefaultErrorPage}">
    <error statusCode="404" redirect="{yourhomePage}"/>
</customErrors>

MSDN上的customErrors元素


1
如果可能的话,尝试让你的404页面永久重定向到类似的URL。
因此,而不是返回404响应,对于你网站上的类似URL,进行301响应进行重定向。从优化SEO角度来看,这是最好的选择。

请问如何在web.config中针对特定的错误URL添加301重定向? - Abijith Ajayan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接