什么是404錯(cuò)誤
HTTP 404 錯(cuò)誤意味著鏈接指向的網(wǎng)頁(yè)不存在,即原始網(wǎng)頁(yè)的URL失效,這種情況經(jīng)常會(huì)發(fā)生,很難避免,比如說(shuō):網(wǎng)頁(yè)URL生成規(guī)則改變、網(wǎng)頁(yè)文件更名或移動(dòng)位置、導(dǎo)入鏈接拼寫(xiě)錯(cuò)誤等,導(dǎo)致原來(lái)的URL地址無(wú)法訪問(wèn);當(dāng)Web 服務(wù)器接到類似請(qǐng)求時(shí),會(huì)返回一個(gè)404 狀態(tài)碼,告訴瀏覽器要請(qǐng)求的資源并不存在。但是,Web服務(wù)器默認(rèn)的404錯(cuò)誤頁(yè)面,無(wú)論Apache還是IIS,均十分簡(jiǎn)陋、呆板且對(duì)用戶不友好,無(wú)法給用戶提供必要的信息以獲取更多線索,無(wú)疑這會(huì)造成用戶的流失。
404頁(yè)面的作用
搜索引擎通過(guò)HTTP狀態(tài)碼來(lái)識(shí)別網(wǎng)頁(yè)的狀態(tài)。當(dāng)搜索引擎獲得了一個(gè)錯(cuò)誤鏈接時(shí),網(wǎng)站應(yīng)該返回404狀態(tài)碼,告訴搜索引擎放棄對(duì)該鏈接的索引。而如果返回200或302狀態(tài)碼,搜索引擎就會(huì)為該鏈接建立索引,這導(dǎo)致大量不同的鏈接指向了相同的網(wǎng)頁(yè)內(nèi)容。結(jié)果是,搜索引擎對(duì)該網(wǎng)站的信任度大幅降低。
如何檢查自定義404頁(yè)面能夠返回“404”狀態(tài)碼
在自定義404錯(cuò)誤頁(yè)面設(shè)置完畢后,一定要檢查一下其是不是能夠正確地返回“404”狀態(tài)碼。檢查的方法也相當(dāng)簡(jiǎn)單,輸入一個(gè)網(wǎng)站內(nèi)不存在網(wǎng)頁(yè)的url,查看一下HTTP Header的返回情況,確信其返回的是“404”狀態(tài)碼。
404頁(yè)面的正確做法
1、Apache服務(wù)器404頁(yè)面的設(shè)置方法
在.htaccess 文件中加入代碼:ErrorDocument 404 /Error.html
建立一個(gè)簡(jiǎn)單的html404頁(yè)面命名 Error.html
把 Error.html放置在網(wǎng)站根目錄即可。
2、IIS/ASP.net下設(shè)置404錯(cuò)誤頁(yè)面
首先,修改應(yīng)用程序根目錄的設(shè)置,打開(kāi) “web.config” 文件編輯,在其中加入如下內(nèi)容:
<configuration> <system.web> <customErrors mode=”On” defaultRedirect=”error.asp”> <error statusCode=”404″ redirect=”notfound.asp” /> </customErrors> </system.web> </configuration> |
此例中“error.asp”為系統(tǒng)默認(rèn)的404頁(yè)面,“notfound.asp”為自定義的404頁(yè)面,使用時(shí)請(qǐng)修改相應(yīng)文件名。
然后,在自定義的404頁(yè)面“notfound.asp”中加入:
<% Response.Status = “404 Not Found” %> |
這樣,便可以保證IIS能夠正確地返回“404”狀態(tài)碼
友情提醒
1、一定不要將404錯(cuò)誤直接轉(zhuǎn)向到網(wǎng)站首頁(yè),這將可能導(dǎo)致你的網(wǎng)站首頁(yè)不被收錄;
2、/Error.html 前面請(qǐng)不要帶主域名(錯(cuò)誤的寫(xiě)法:yzznl.cn/error.html,正確的寫(xiě)法:/error.html),否者返回的狀態(tài)碼是302或200狀態(tài)碼。
從網(wǎng)上搜索asp.net網(wǎng)站如何自定義404錯(cuò)誤頁(yè)面時(shí),大多數(shù)文章都是告訴你在web.config中,找到system.web,配置以下內(nèi)容即可。
<customErrors mode="On" error statusCode="404" redirect="/404.htm" >
</customErrors>
實(shí)際上這樣做之后,根本就得不到404未找到網(wǎng)頁(yè)的網(wǎng)頁(yè)頭信息,得到的是302臨時(shí)重定向的網(wǎng)頁(yè)頭信息。大家可以用 Check Headers Tool 工具查看 HTTP Status Codes就知道了。
那么如何正確配置asp.net網(wǎng)站的自定義404錯(cuò)誤網(wǎng)頁(yè)呢?
首先制作一個(gè)404.aspx頁(yè)面,然后在web.config文件下的customeErrors中如下配置:
customErrors redirectMode="ResponseRewrite"
error statusCode="404" redirect="~/404.aspx"/
/customErrors
RedirectMode有兩種屬性。
ResponseRedirect是指將用戶重定向到該錯(cuò)誤頁(yè)面,并且原始 URL 更改為該錯(cuò)誤頁(yè)面的 URL。
ResponseRewrite是指將用戶定向到錯(cuò)誤頁(yè)面,并且不更改瀏覽器中的原始 URL。
然后再在404.aspx.cs文件中,為Page_Load事件中加入以下代碼:
protected void Page_Load(object sender, EventArgs e)
{
Response.Status = "404 Not Found";
}
經(jīng)過(guò)這樣設(shè)置之后,HTTP Status Code 才會(huì)是 404 Not Found。