ASP.NET 自定义404错误页面

本文介绍如何正确配置ASP.NET中的404错误页面,避免使用302重定向导致搜索引擎优化(SEO)问题。通过设置两个不同的404页面及调整Web.config文件,确保返回正确的HTTP状态码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

默认情况下微软已经在 Web.config 加入了如下代码:

        <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
            <error statusCode="403" redirect="NoAccess.htm" />
            <error statusCode="404" redirect="FileNotFound.htm" />
        </customErrors>

但对于SEO来说,这样是不可取得,因为这种转向的HTTP Status-Code是302!

302 redirect: 302代表暂时性转移(Temporarily Moved ),在前些年,不少Black Hat SEO曾广泛应用这项技术作弊,目前,各大主要搜索引擎均加强了打击力度,象Google前些年对Business.com以及近来对BMW德国网站的惩罚。即使网站客观上不是spam,也很容易被搜寻引擎容易误判为spam而遭到惩罚。


我们希望自定义ASP.NET 404错误,但又不希望使用ASP.NET默认的302转向的方法,我们要制作两个404页面404b.aspx和404b.htm

在IIS中指定404错误到静态404b.htm,然后我们还需要修改Web.config:

    <customErrors  redirectMode="ResponseRewrite">
      <error statusCode="404" redirect="~/404b.aspx"/>
    </customErrors>

我们必须把redirectMode设成"ResponseRewrite",这样ASP.NET才不会用302给我们转向。

RedirectMode 属性设置为  ResponseRedirect,则将用户重定向到该错误页面,并且原始 URL 更改为该错误页面的 URL。 
RedirectMode 属性设置为  ResponseRewrite,则将用户定向到错误页面,并且不更改浏览器中的原始 URL。


到这一步还没有完,因为这时候的.aspx等应用程序文件的没有找到资源的错误转向的HTTP Status-Code却变成了200 OK:)

这时候大家应该明白了为什么建2个404页面了吧,404b.aspx页面就是为ASP.NET 404错误准备的,在404b.aspx的Page_Load事件中加入:

Response.Status = "404 Not Found";

整个Page_Load段代码类似:

    protected void Page_Load(object sender, EventArgs e)
    {
        Response.Status = "404 Not Found";
    }

这样我们再在我们的站点中随意输入一个网址就能看到我们先前设置的404错误页面了,而且不管是静态文件还是asp.net的动态文件,HTTP Status-Code都是404 Not Found。

转载于:https://www.cnblogs.com/lvzefeng/archive/2013/06/13/3134706.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值