发生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中的写法
<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.返回动态页面
web.config中的写法
</system.webServer> <httpErrors errorMode="Custom" existingResponse="Replace"> <remove statusCode="404" subStatusCode="-1" /> <error statusCode="404" prefixLanguageFilePath="" path="/ErrorPage/NotFound" responseMode="ExecuteURL" /> </httpErrors> </system.webServer>
与上面差别的就是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。
这个时刻再去要求不存在的途径。
圆满处理!
以上就是ASP.NET MVC完成404跳转的代码实例的细致内容,更多请关注ki4网别的相干文章!