最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

ASP.NET MVC制作404跳轉(zhuǎn)實(shí)例(非302和200)

 更新時(shí)間:2017年04月06日 11:14:46   作者:流水自逍遙  
本篇文章主要介紹了ASP.NET MVC制作404跳轉(zhuǎn)實(shí)例(非302和200) ,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

產(chǎn)生404的原因主要有以下:

    1.瀏覽器和爬蟲(chóng):某些瀏覽器會(huì)請(qǐng)求網(wǎng)站的favicon.ico,而如果你的網(wǎng)站根目錄下沒(méi)有這個(gè)文件,那么瀏覽器會(huì)有一條404的log,同樣搜索引擎會(huì)請(qǐng)求robots.txt。但這個(gè)影響不大。

    2.用戶輸入了錯(cuò)誤URL:某些用戶不小心在瀏覽器地址欄加了一個(gè)字符或者刪除了一個(gè)字符,導(dǎo)致服務(wù)器找不到請(qǐng)求的路徑。

    3.某些網(wǎng)站引用的地址過(guò)老:某個(gè)頁(yè)面已經(jīng)被刪除,而其他網(wǎng)站依然引用,他人點(diǎn)擊的時(shí)候服務(wù)器找不到請(qǐng)求的路徑。

404與SEO:

本網(wǎng)站由于經(jīng)過(guò)改版,所以有很多失效的鏈接,而我也提交了死鏈給百度,但過(guò)了半個(gè)月也不見(jiàn)百度刪除那些失效的鏈接。后來(lái)我用站長(zhǎng)工具查詢那些鏈接的HTTP狀態(tài),發(fā)現(xiàn)竟然返回的是302,這就難怪了。

為了給用戶友好的體驗(yàn),我制作了404頁(yè)面,并且在Application_Error中捕獲404,然后Response.Redicet()到404頁(yè)面。那時(shí)候因?yàn)椴欢甋EO,以為這就算做了404頁(yè)面。結(jié)果發(fā)現(xiàn),這樣是做了一個(gè)302跳轉(zhuǎn),這樣404的狀態(tài)碼就變成了302,而搜索引擎Spider請(qǐng)求的時(shí)候,返回的是302的話,它就會(huì)認(rèn)為你這個(gè)網(wǎng)頁(yè)是正常的!導(dǎo)致網(wǎng)站的失效鏈接一直不被搜索引擎刪除,久而久之,網(wǎng)站的死鏈過(guò)得,就會(huì)得到搜索引擎的懲罰。所以,正確的404跳轉(zhuǎn)應(yīng)該是返回友好頁(yè)面給用戶的同時(shí),返回404的HTTP狀態(tài)碼給Spider。

ASP.NET中404跳轉(zhuǎn)的解決方案:

上一篇講了ASP.NET中自定義錯(cuò)誤頁(yè)的三種方法,這里就不多說(shuō)了!

使用的是第三種httpErrors也就是IIS錯(cuò)誤頁(yè),原因如下:

  1. Application_Error:好像比較難做到404跳轉(zhuǎn)的同時(shí)又返回404狀態(tài)碼,一般會(huì)返回302;
  2. customErrors:博主嘗試使用的時(shí)候,失敗了,學(xué)藝不精啊,哎;
  3. httpErrors:博主嘗試使用的時(shí)候,碰巧解決了,所以就是它了;

下面就來(lái)講具體如何操作! 

IIS錯(cuò)誤頁(yè)的使用又分三種情況:

1.返回靜態(tài)文件  2.返回動(dòng)態(tài)頁(yè)面  3.302重定向。

其中3直接忽略。  

1.返回靜態(tài)文件   

使用此方法,需要準(zhǔn)備一個(gè)靜態(tài)html頁(yè)面,然后放在硬盤里,指定路徑的時(shí)候須給出絕對(duì)路徑。

web.config中的寫(xiě)法

<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表示客戶端語(yǔ)言的文件目錄,path表示文件相對(duì)于客戶端語(yǔ)言目錄的路徑,responseMode表示響應(yīng)類型,這里是File(文件)

IIS中的操作

兩者選其一即可

由于博主嘗試使用文件的時(shí)候以失敗告終,所以這里不多說(shuō),說(shuō)多了都是淚!

 2.返回動(dòng)態(tài)頁(yè)面

web.config中的寫(xiě)法

</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中的操作

兩者選其一即可

博主最后選擇的這種方法,但是這種方法有幾個(gè)坑需要注意

1.不能指定網(wǎng)站相對(duì)目錄下的靜態(tài)HTML文件,比如404.html。

 2.指定的動(dòng)態(tài)頁(yè)面cshtm、aspx等,需指定響應(yīng)碼為404。

以上兩種情況如果不注意,那么你的404返回的響應(yīng)碼不是404也不是302而是200。

因?yàn)檫@種方法是返回網(wǎng)站根目錄下的一個(gè)網(wǎng)頁(yè)來(lái)作為404頁(yè)面,而靜態(tài)頁(yè)面只要能訪問(wèn)到,那肯定就是200了。動(dòng)態(tài)cshtml或者aspx如果沒(méi)指定響應(yīng)碼,那么返回200也不奇怪。

所以說(shuō)具體做法如下(以ASP.NET MVC為例):

public class ErrorPageController : Controller
{
  public ActionResult NotFound()
  {
    Response.Status = "404 Not Found";
    Response.StatusCode = 404;
    return View();
  }
}  

建一個(gè)控制器ErrorPage,里面可以定義各種錯(cuò)誤頁(yè)面,這里只是404頁(yè)面。

然后建一個(gè)NotFound視圖,把404頁(yè)面寫(xiě)漂亮一點(diǎn)。

OVER。

這個(gè)時(shí)候再去請(qǐng)求不存在的路徑。

完美解決!

Demo下載地址:點(diǎn)擊進(jìn)入

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • asp.net與Discuz!NT整合集成實(shí)例教程

    asp.net與Discuz!NT整合集成實(shí)例教程

    由于項(xiàng)目需要一個(gè)論壇,本來(lái)有CS的,在.net下很出名的國(guó)外開(kāi)源論壇。但為了適應(yīng)國(guó)內(nèi)的風(fēng)氣,最后選用在國(guó)內(nèi)如日中天的Discuz!NT。將Discuz與asp.net開(kāi)發(fā)的網(wǎng)站整合,有很多人已經(jīng)完成了。
    2009-11-11
  • DataGridView展開(kāi)與收縮功能實(shí)現(xiàn)

    DataGridView展開(kāi)與收縮功能實(shí)現(xiàn)

    我們今天將要講到DataGridView之行的展開(kāi)與收縮,包括功能是如何實(shí)現(xiàn)的,感興趣的小伙伴們可以參考一下
    2015-09-09
  • ASP.Net的Application介紹

    ASP.Net的Application介紹

    注:這個(gè)事件,寫(xiě)不寫(xiě)On是一樣的。如Application_End與Application_OnEnd是一樣的
    2013-07-07
  • .Net語(yǔ)言Smobiler開(kāi)發(fā)之如何仿微信朋友圈的消息樣式

    .Net語(yǔ)言Smobiler開(kāi)發(fā)之如何仿微信朋友圈的消息樣式

    這篇文章主要介紹了.Net語(yǔ)言Smobiler開(kāi)發(fā)平臺(tái)如何仿微信朋友圈的消息樣式?本文為大家揭曉答案
    2016-09-09
  • Javascript 直接調(diào)用服務(wù)器C#代碼 ASP.NET Ajax實(shí)例

    Javascript 直接調(diào)用服務(wù)器C#代碼 ASP.NET Ajax實(shí)例

    近來(lái)總有一些朋友會(huì)問(wèn)到一些入門的問(wèn)題,把這些問(wèn)題整理一下,寫(xiě)出來(lái)。在以前的文章里,曾經(jīng)利用純JS編寫(xiě)過(guò)Ajax引擎,在真正開(kāi)發(fā)的時(shí)候,大家都不喜歡以這種低效率的方式開(kāi)發(fā),利用MS Ajax的集成的引擎,可以簡(jiǎn)單不少工作。
    2010-03-03
  • .Net Core學(xué)習(xí)教程之在Mvc中簡(jiǎn)單的使用日志組件

    .Net Core學(xué)習(xí)教程之在Mvc中簡(jiǎn)單的使用日志組件

    這篇文章主要給大家介紹了關(guān)于.Net Core學(xué)習(xí)教程之在Mvc中簡(jiǎn)單使用日志組件的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-06-06
  • asp.net AJAX注冊(cè)類

    asp.net AJAX注冊(cè)類

    單純用JavaScript,不需要注冊(cè),但是就是用不了AJAX的某些機(jī)制。
    2010-02-02
  • NET?NativeAOT?用法指南

    NET?NativeAOT?用法指南

    NativeAOT?是?.NET?中一個(gè)非常棒和強(qiáng)大的工具,有了?NativeAOT,你可以以可預(yù)測(cè)的性能構(gòu)建你的應(yīng)用,同時(shí)節(jié)省資源(更低的內(nèi)存占用和更小的二進(jìn)制大?。?本文介紹NET?NativeAOT?指南,感興趣的朋友一起看看吧
    2024-02-02
  • ASP.NET MVC使用RazorEngine解析模板生成靜態(tài)頁(yè)

    ASP.NET MVC使用RazorEngine解析模板生成靜態(tài)頁(yè)

    這篇文章主要介紹了ASP.NET MVC使用RazorEngine解析模板生成靜態(tài)頁(yè)的相關(guān)資料,需要的朋友可以參考下
    2016-05-05
  • asp.net 的錯(cuò)誤處理機(jī)制講解

    asp.net 的錯(cuò)誤處理機(jī)制講解

    asp.net 的錯(cuò)誤處理機(jī)制講解...
    2007-04-04

最新評(píng)論

扶沟县| 武夷山市| 金乡县| 临高县| 清涧县| 西峡县| 勃利县| 聂拉木县| 柏乡县| 常熟市| 丘北县| 西青区| 台南市| 朝阳区| 凉城县| 阿克苏市| 新宁县| 太和县| 政和县| 莱芜市| 鄄城县| 友谊县| 平遥县| 博乐市| 渭源县| 怀集县| 兴化市| 商洛市| 龙川县| 乌兰浩特市| 湖口县| 阿合奇县| 铜梁县| 江都市| 曲阳县| 蕉岭县| 邳州市| 临洮县| 台州市| 茂名市| 长治市|