ASP.NET MVC实现404跳转的代码实例


本文摘自PHP中文网,作者Y2J,侵删。

本篇文章主要介绍了ASP.NET MVC制作404跳转实例(非302和200) ,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

产生404的原因主要有以下:

1.浏览器和爬虫:某些浏览器会请求网站的favicon.ico,而如果你的网站根目录下没有这个文件,那么浏览器会有一条404的log,同样搜索引擎会请求robots.txt。但这个影响不大。

2.用户输入了错误URL:某些用户不小心在浏览器地址栏加了一个字符或者删除了一个字符,导致服务器找不到请求的路径。

3.某些网站引用的地址过老:某个页面已经被删除,而其他网站依然引用,他人点击的时候服务器找不到请求的路径。

404与SEO:

本网站由于经过改版,所以有很多失效的链接,而我也提交了死链给百度,但过了半个月也不见百度删除那些失效的链接。后来我用站长工具查询那些链接的HTTP状态,发现竟然返回的是302,这就难怪了。

为了给用户友好的体验,我制作了404页面,并且在Application_Error中捕获404,然后Response.Redicet()到404页面。那时候因为不懂SEO,以为这就算做了404页面。结果发现,这样是做了一个302跳转,这样404的状态码就变成了302,而搜索引擎Spider请求的时候,返回的是302的话,它就会认为你这个网页是正常的!导致网站的失效链接一直不被搜索引擎删除,久而久之,网站的死链过得,就会得到搜索引擎的惩罚。所以,正确的404跳转应该是返回友好页面给用户的同时,返回404的HTTP状态码给Spider。

ASP.NET中404跳转的解决方案:

上一篇讲了ASP.NET中自定义错误页的三种方法,这里就不多说了!

使用的是第三种httpErrors也就是IIS错误页,原因如下:

  1. Application_Error:好像比较难做到404跳转的同时又返回404状态码,一般会返回302;

  2. customErrors:博主尝试使用的时候,失败了,学艺不精啊,哎;

  3. httpErrors:博主尝试使用的时候,碰巧解决了,所以就是它了;

下面就来讲具体如何操作!

IIS错误页的使用又分三种情况:

1.返回静态文件 2.返回动态页面 3.302重定向。

其中3直接忽略。

1.返回静态文件

使用此方法,需要准备一个静态html页面,然后放在硬盘里,指定路径的时候须给出绝对路径。

web.config中的写法

1

2

3

4

5

6

<system.webServer>

  <httpErrors errorMode="Custom" existingResponse="Replace">

  <remove statusCode="404" subStatusCode="-1" />

  <error statusCode="404" prefixLanguageFilePath="" path="D:\ErrorPage\404.html" responseMode="File" />

  </httpErrors>

</system.webServer>

prefixLanguageFilePath表示客户端语言的文件目录,path表示文件相对于客户端语言目录的路径,responseMode表示响应类型,这里是File(文件)

IIS中的操作

两者选其一即可

由于博主尝试使用文件的时候以失败告终,所以这里不多说,说多了都是泪!

2.返回动态页面

阅读剩余部分

相关阅读 >>

asp.net部署到iis常见问题的解决方法_实用技巧

asp.net利用反射实现给model类赋值的示例代码分析

asp.net core应用程序在linux上部署的图文详解

分享一个“网红脸“”框架实例教程

asp.net函数总结

asp.net常用函数总结

asp.net mvc 5改进了基于过滤器的身份验证

传播智客asp.net高级系列视频资料分享

操作 asp.net web api 的实例教程

动态生成html表单的asp.net方法代码示例

更多相关阅读请进入《asp.net》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...