日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > asp.net >内容正文

asp.net

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

發(fā)布時(shí)間:2024/9/30 asp.net 83 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mvc 404错误 php,ASP.NET MVC实现404跳转的代码实例 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本篇文章主要介紹了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.用戶(hù)輸入了錯(cuò)誤URL:某些用戶(hù)不小心在瀏覽器地址欄加了一個(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)工具查詢(xún)那些鏈接的HTTP狀態(tài),發(fā)現(xiàn)竟然返回的是302,這就難怪了。

為了給用戶(hù)友好的體驗(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è)面給用戶(hù)的同時(shí),返回404的HTTP狀態(tài)碼給Spider。

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

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

使用的是第三種httpErrors也就是IIS錯(cuò)誤頁(yè),原因如下:Application_Error:好像比較難做到404跳轉(zhuǎn)的同時(shí)又返回404狀態(tài)碼,一般會(huì)返回302;

customErrors:博主嘗試使用的時(shí)候,失敗了,學(xué)藝不精啊,哎;

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è)面,然后放在硬盤(pán)里,指定路徑的時(shí)候須給出絕對(duì)路徑。

web.config中的寫(xiě)法

prefixLanguageFilePath表示客戶(hù)端語(yǔ)言的文件目錄,path表示文件相對(duì)于客戶(hù)端語(yǔ)言目錄的路徑,responseMode表示響應(yīng)類(lèi)型,這里是File(文件)

IIS中的操作

兩者選其一即可

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

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

web.config中的寫(xiě)法

與上面不同的就是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)求不存在的路徑。

完美解決!

總結(jié)

以上是生活随笔為你收集整理的mvc 404错误 php,ASP.NET MVC实现404跳转的代码实例的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。