本篇文章主要介绍了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错误页,原因如下:Application_Error:好像比较难做到404跳转的同时又返回404状态码,一般会返回302;

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

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

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

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

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

其中3直接忽略。

1.返回静态文件

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

web.config中的写法

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

IIS中的操作

两者选其一即可

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

2.返回动态页面

web.config中的写法

与上面不同的就是responseMode="ExecuteURL"。

IIS中的操作

两者选其一即可

博主最后选择的这种方法,但是这种方法有几个坑需要注意!

1.不能指定网站相对目录下的静态HTML文件,比如404.html。

2.指定的动态页面cshtm、aspx等,需指定响应码为404。

以上两种情况如果不注意,那么你的404返回的响应码不是404也不是302而是200。

因为这种方法是返回网站根目录下的一个网页来作为404页面,而静态页面只要能访问到,那肯定就是200了。动态cshtml或者aspx如果没指定响应码,那么返回200也不奇怪。

所以说具体做法如下(以ASP.NET MVC为例):public class ErrorPageController : Controller

{

public ActionResult NotFound()

{

Response.Status = "404 Not Found";

Response.StatusCode = 404;

return View();

}

}

建一个控制器ErrorPage,里面可以定义各种错误页面,这里只是404页面。

然后建一个NotFound视图,把404页面写漂亮一点。

OVER。

这个时候再去请求不存在的路径。

完美解决!

mvc 404错误 php,ASP.NET MVC实现404跳转的代码实例相关推荐

  1. 七天学会ASP.NET MVC (一)——深入理解ASP.NET MVC

    七天学会ASP.NET MVC (一)--深入理解ASP.NET MVC 系列文章 七天学会ASP.NET MVC (一)--深入理解ASP.NET MVC 七天学会ASP.NET MVC (二)-- ...

  2. asp.net获取页面url参数值的实现代码实例

    asp.net获取页面url参数值的实现代码实例 file: default.aspx.cs using system; using system.data; using system.configu ...

  3. 服务器mvc提示404错误信息,解决Spring MVC提示404错误找不到JSP问题

    Spring mvc开发时当遇到404错误是一个比较蛋疼的问题,因为一般不会到达后台和Controller,所以在日志中不会有信息.这时只能通过经验解决了. 一般情况都是Url的Mapping没有找到 ...

  4. Spring.Net+NHibenate+Asp.Net mvc +ExtJs 系列 6 ----asp.net MVC+Extjs

    现在mvc采用了ModelBinder, Controller中现在可以接受很多复杂类型的参数,但是对于jquery,extjs等js框架来说,更多的是采用json格式与服务器端传递参数更合理.对于简 ...

  5. ASP.NET MVC教程五:ASP.NET MVC中的路由

    一.概述 在ASP.NET MVC架构中,控制器在3大核心构件中处于中心地位,通过控制器支配模型和视图,然而从浏览器发出的请求到控制器还需要路由的协助,路由将特定的请求和控制器的动作对应起来. 在AS ...

  6. MVC 各种传值方式 ASP.NET MVC view与controller传值方式

    MVC 各种传值方式 ViewData传值. HomeController.cs Co de: public ActionResult Index() {       ViewData["T ...

  7. npoi的mvc怎么ajax导出,asp.net mvc利用NPOI导入导出Excel解决方法

    asp.net mvc利用NPOI导入导出Excel 导出Excel 2003没有问题,导出Excel2007老是出现无法访问已关闭的流,请帮忙解决,或是哪位有mvc导入导出excel的工具类能提供, ...

  8. ASP.NET MVC教程四:ASP.NET MVC中页面传值的几种方式

    准备 在Models文件夹里面新添加Student实体类,用来模拟从Controller向View传递数据,Student类定义如下: using System; using System.Colle ...

  9. mvc if 显示html,asp.net mvc - 在MVC3 Razor中,如何在动作中获取渲染视图的html?

    @Chev上面接受的答案很好,但我想渲染特定操作的结果,而不仅仅是特定的视图. 此外,我需要能够将参数传递给该操作,而不是依赖于注入模型. 所以我想出了我自己的方法,我把它放在我的控制器的基类中(让它 ...

最新文章

  1. Mat转换为IplImage 类型和CvMat 类型
  2. Python 类函数迭代器
  3. 深度学习核心技术精讲100篇(四十二)-Seq2seq框架下的文本生成
  4. php开启端口复用,请问下workman是否支持端口复用?
  5. python 条件概率_使用Pymc3的条件概率
  6. 2021当一名优雅的代码打工人
  7. Windows Phone 7 开发 31 日谈——第13日:位置服务
  8. 路由器接口为啥不能配置为任意播地址_计算机三级网络技术(7):路由器配置及使用(下)...
  9. ganglia集群监控搭建步骤
  10. 《Adobe Audition CC经典教程》——1.5 使用外部连接器
  11. 开源工业物联网数据库 Apache IoTDB 毕业成为 Apache 顶级项目!
  12. 因算法裁定“效率低下”,近150名员工遭解雇
  13. 删除页码和从第三页开始有页码
  14. 基因组Masked作用
  15. linux那些事儿之我是i2c -- Gsenser(三)
  16. SolidWorks Premium 白金版
  17. L1-054 福到了 (15 分)
  18. golang开发:WaitGroup Mutex
  19. 手机web端唤醒qq客户端以及电脑web端唤醒qq客户端
  20. 华为手机充满有提醒吗_手机充满电铃声提醒软件下载-华为手机充满电铃声提醒软件app下载 v1.0-友情手机站...

热门文章

  1. IJCAI 2020 | 淡妆浓抹总相宜之人脸上妆
  2. 年度最Hot,三大热点赛题,首届「马栏山」杯国际音视频算法大赛正式开赛
  3. 今晚直播 | 旷视研究院王毅:用于条件图像生成的注意力归一化
  4. 机器学习理论《统计学习方法》学习笔记:第六章 逻辑斯谛回归与最大熵模型
  5. java logging包_用JDK中提供的java.util.logging.*包创建Logger对象----原创
  6. python编程题大全-python编程题
  7. 软件测试——StringFunction测试
  8. Windows——Windows 10 加装 Windoes 7 制作双系统时,Windoes 7 启动卡在正在启动界面,并且重启无效解决方案
  9. 巴什博奕(Bash_Game)
  10. Oracle中TO_DATE格式的使用小结