新聞中心
這篇文章主要介紹了怎么在ASP.NET中利用MVC實(shí)現(xiàn)一個(gè)404跳轉(zhuǎn)功能,創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司,小編覺得不錯(cuò),現(xiàn)在分享給大家,也給大家做個(gè)參考,一起跟隨創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司,小編來看看吧!
ASP.NET 是什么
ASP.NET 是開源,跨平臺(tái),高性能,輕量級(jí)的 Web 應(yīng)用構(gòu)建框架,常用于通過 HTML、CSS、JavaScript 以及服務(wù)器腳本來構(gòu)建網(wǎng)頁和網(wǎng)站。
產(chǎn)生404的原因主要有以下:
1.瀏覽器和爬蟲:某些瀏覽器會(huì)請(qǐng)求網(wǎng)站的favicon.ico,而如果你的網(wǎng)站根目錄下沒有這個(gè)文件,那么瀏覽器會(huì)有一條404的log,同樣搜索引擎會(huì)請(qǐng)求robots.txt。但這個(gè)影響不大。
2.用戶輸入了錯(cuò)誤URL:某些用戶不小心在瀏覽器地址欄加了一個(gè)字符或者刪除了一個(gè)字符,導(dǎo)致服務(wù)器找不到請(qǐng)求的路徑。
3.某些網(wǎng)站引用的地址過老:某個(gè)頁面已經(jīng)被刪除,而其他網(wǎng)站依然引用,他人點(diǎn)擊的時(shí)候服務(wù)器找不到請(qǐng)求的路徑。
404與SEO:
本網(wǎng)站由于經(jīng)過改版,所以有很多失效的鏈接,而我也提交了死鏈給百度,但過了半個(gè)月也不見百度刪除那些失效的鏈接。后來我用站長(zhǎng)工具查詢那些鏈接的HTTP狀態(tài),發(fā)現(xiàn)竟然返回的是302,這就難怪了。
為了給用戶友好的體驗(yàn),我制作了404頁面,并且在Application_Error中捕獲404,然后Response.Redicet()到404頁面。那時(shí)候因?yàn)椴欢甋EO,以為這就算做了404頁面。結(jié)果發(fā)現(xiàn),這樣是做了一個(gè)302跳轉(zhuǎn),這樣404的狀態(tài)碼就變成了302,而搜索引擎Spider請(qǐng)求的時(shí)候,返回的是302的話,它就會(huì)認(rèn)為你這個(gè)網(wǎng)頁是正常的!導(dǎo)致網(wǎng)站的失效鏈接一直不被搜索引擎刪除,久而久之,網(wǎng)站的死鏈過得,就會(huì)得到搜索引擎的懲罰。所以,正確的404跳轉(zhuǎn)應(yīng)該是返回友好頁面給用戶的同時(shí),返回404的HTTP狀態(tài)碼給Spider。
ASP.NET中404跳轉(zhuǎn)的解決方案:
上一篇講了ASP.NET中自定義錯(cuò)誤頁的三種方法,這里就不多說了!
使用的是第三種httpErrors也就是IIS錯(cuò)誤頁,原因如下:
Application_Error:好像比較難做到404跳轉(zhuǎn)的同時(shí)又返回404狀態(tài)碼,一般會(huì)返回302;
customErrors:博主嘗試使用的時(shí)候,失敗了,學(xué)藝不精啊,哎;
httpErrors:博主嘗試使用的時(shí)候,碰巧解決了,所以就是它了;
下面就來講具體如何操作!
IIS錯(cuò)誤頁的使用又分三種情況:
1.返回靜態(tài)文件 2.返回動(dòng)態(tài)頁面 3.302重定向。
其中3直接忽略。
1.返回靜態(tài)文件
使用此方法,需要準(zhǔn)備一個(gè)靜態(tài)html頁面,然后放在硬盤里,指定路徑的時(shí)候須給出絕對(duì)路徑。
web.config中的寫法
prefixLanguageFilePath表示客戶端語言的文件目錄,path表示文件相對(duì)于客戶端語言目錄的路徑,responseMode表示響應(yīng)類型,這里是File(文件)
IIS中的操作
兩者選其一即可
由于博主嘗試使用文件的時(shí)候以失敗告終,所以這里不多說,說多了都是淚!
2.返回動(dòng)態(tài)頁面
web.config中的寫法
與上面不同的就是responseMode="ExecuteURL"。
IIS中的操作
兩者選其一即可
博主最后選擇的這種方法,但是這種方法有幾個(gè)坑需要注意!
1.不能指定網(wǎng)站相對(duì)目錄下的靜態(tài)HTML文件,比如404.html。
2.指定的動(dòng)態(tài)頁面cshtm、aspx等,需指定響應(yīng)碼為404。
以上兩種情況如果不注意,那么你的404返回的響應(yīng)碼不是404也不是302而是200。
因?yàn)檫@種方法是返回網(wǎng)站根目錄下的一個(gè)網(wǎng)頁來作為404頁面,而靜態(tài)頁面只要能訪問到,那肯定就是200了。動(dòng)態(tài)cshtml或者aspx如果沒指定響應(yīng)碼,那么返回200也不奇怪。
所以說具體做法如下(以ASP.NET MVC為例):
public class ErrorPageController : Controller { public ActionResult NotFound() { Response.Status = "404 Not Found"; Response.StatusCode = 404; return View(); } }
建一個(gè)控制器ErrorPage,里面可以定義各種錯(cuò)誤頁面,這里只是404頁面。
然后建一個(gè)NotFound視圖,把404頁面寫漂亮一點(diǎn)。
OVER。
這個(gè)時(shí)候再去請(qǐng)求不存在的路徑。
以上就是創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司,小編為大家收集整理的怎么在ASP.NET中利用MVC實(shí)現(xiàn)一個(gè)404跳轉(zhuǎn)功能,如何覺得創(chuàng)新互聯(lián)建站的內(nèi)容還不錯(cuò),歡迎將創(chuàng)新互聯(lián)建站推薦給身邊好友。
分享名稱:怎么在ASP.NET中利用MVC實(shí)現(xiàn)一個(gè)404跳轉(zhuǎn)功能-創(chuàng)新互聯(lián)
網(wǎng)頁鏈接:http://www.ef60e0e.cn/article/poops.html