手机版

ASP.NET MVC做了404跳的例子(不是302和200)

时间:2021-09-05 来源:互联网 编辑:宝哥软件园 浏览:

404的主要原因如下:

1.浏览器和爬虫:有些浏览器会请求网站的favicon.ico,但是如果你的网站根目录中没有这样的文件,那么浏览器的日志就会是404,搜索引擎也会请求robots.txt,但是这影响不大。

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

3.有些网站引用的地址太旧:一个页面已经被删除,而其他网站仍然引用它。当其他人单击时,服务器找不到请求的路径。

404和SEO:

这个网站已经改版了,所以有很多无效链接,我也给百度提交了死链接,但是半个月后,我没有看到百度删除那些无效链接。后来我用站长工具查询那些链接的HTTP状态,发现302居然被退回来了,这也难怪。

为了给用户一个友好的体验,我制作了404页,在Application_Error中捕获了404页,然后是Response。重编()到404页。当时因为不懂SEO,以为会是404页。原来这是一个302的跳转,所以404的状态码变成了302。搜索引擎Spider请求时,返回302,会认为你的网页正常!网站的无效链接没有被搜索引擎删除。随着时间的推移,网站的死链将受到搜索引擎的惩罚。因此,正确的404跳转应该是将友好页面返回给用户,并将404的HTTP状态代码返回给Spider。

ASP中404跳转的解决方案。NET

上一篇文章讲了ASP.NET定制错误页面的三种方法,这里就不多说了!

第三种类型的httpErrors是IIS错误页,使用它的原因如下:

Application_Error:似乎很难跳转404并返回404状态码,通常返回302;CustomErrors:博主尝试用的时候失败了,不善于学习,嘿;HttpErrors:博主尝试使用的时候,碰巧解决了,就这样了;来说说怎么操作吧!

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

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

其中三个直接忽略。

1.返回静态文件

使用这种方法,您需要准备一个静态html页面,并将其放在硬盘上。指定路径时,必须给出绝对路径。

在web.config中写入

system . webserver https error mode=' Custom ' existingResponse=' Replace ' remove statusCode=' 404 ' subStatusCode='-1 '/error statusCode=' 404 ' prefixLanguageFilePath=' ' Path=' d : \ error page \ 404 . html ' responseMode=' File '/https errors/system . webserver prefixelanguagefilepath表示客户端语言的文件目录,path表示文件相对于客户端语言目录的路径,response mode表示

IIS中的操作

你可以从中选择一个

因为博主在尝试使用文件的时候失败了,这里就不多说了。说多了是泪!

2.返回动态页面

在web.config中写入

/system . webserver Httperrors Error mode=' Custom ' existingResponse=' Replace ' remove statusCode=' 404 ' subStatusCode='-1 '/错误状态代码=' 404 ' prefixlanguagefilepath=' path='/Error page/not found ' response mode=' executerurl '/Httperrors/system。在responsemode=' executerurl '中,webserver与上述不同。

IIS中的操作

你可以从中选择一个

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

1.您不能在网站的相对目录中指定静态HTML文件,例如404.html。

2.对于指定的动态页面cshtm、aspx等。响应代码应指定为404。

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

因为这个方法是把网站根目录下的一个网页作为404页面返回,只要静态页面可以访问,就一定是200。如果dynamic cshtml或aspx没有指定响应代码,那么它返回200也就不足为奇了。

因此,具体做法如下(以ASP.NET MVC为例):

公共类错误页面控制器:控制器{公共操作结果未找到(){响应。状态='404未找到';回应。StatusCode=404返回视图();}}创建一个控制器ErrorPage,可以在其中定义各种错误页面,但这里只有404页。

然后创建一个未找到的视图,漂亮地写404页。

结束.

这时,求不存在的路径。

完美的解决方案!

演示下载地址:点击进入

以上就是本文的全部内容。希望对大家的学习有帮助,支持我们。

版权声明:ASP.NET MVC做了404跳的例子(不是302和200)是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。