這篇文章分享一個(gè)SEO的問(wèn)題,軟404。我們?cè)诰W(wǎng)站中經(jīng)常見(jiàn)到的一個(gè)狀態(tài)碼就是404。無(wú)論我們是否開(kāi)發(fā)一個(gè)網(wǎng)站,這都是要面對(duì)的一個(gè)問(wèn)題

何謂軟404

在說(shuō)軟404之前,我們首先要了解什么是404。404 是一個(gè) ??HTTP狀態(tài)碼??,表示網(wǎng)頁(yè)未找到。簡(jiǎn)單來(lái)說(shuō),當(dāng)我們?cè)L問(wèn)一個(gè)網(wǎng)頁(yè)的時(shí)候,如果我們請(qǐng)求的網(wǎng)址沒(méi)有對(duì)應(yīng)的資源,則網(wǎng)站就會(huì)返回給我們 “404 網(wǎng)頁(yè)不存在”

關(guān)于HTTP不是我們這篇文章的目的,可以查看??HTTP教程??了解更多HTTP基礎(chǔ)知識(shí)。下面我們看一個(gè) 404的通用頁(yè)面

 

在SEO過(guò)程中,如何避免網(wǎng)站中出現(xiàn)軟404_web服務(wù)器

 

默認(rèn)情況下,如果我們?cè)L問(wèn)了一個(gè)不存在的鏈接,web服務(wù)器會(huì)返回給我們上面這樣一個(gè)頁(yè)面(Nginx)。但是,如果我們是一個(gè)網(wǎng)站運(yùn)營(yíng)者,我們會(huì)發(fā)現(xiàn)直接把這種頁(yè)面返回給用戶,肯定會(huì)降低我們網(wǎng)站的逼格。

鑒于此,一般我們都會(huì)自己定義一個(gè)404頁(yè)面,我自己網(wǎng)站的404頁(yè)面是下面這樣子的。

訪問(wèn) https://www.jiyik.com/a.html

在SEO過(guò)程中,如何避免網(wǎng)站中出現(xiàn)軟404_web服務(wù)器_02

軟404

關(guān)于404我們就介紹這么多,下面我們主要說(shuō)一下軟404。剛開(kāi)始做網(wǎng)站的時(shí)候?qū)?04的概念也不了解。最開(kāi)始只想著自定義404頁(yè)面來(lái)提升用戶的體驗(yàn)。 但是有一個(gè)問(wèn)題沒(méi)有注意到,如果是純靜態(tài)的,可以直接通過(guò)Ningx或者Apache等web服務(wù)配置自己的404頁(yè)面。這種是沒(méi)有什么問(wèn)題的。但是如果是那種動(dòng)態(tài)的頁(yè)面,我們是需要在代碼中判斷用戶所請(qǐng)求的資源是否存在,如果不存在的話,我們是直接通過(guò)模版引擎渲染了一個(gè)404頁(yè)面。 簡(jiǎn)單看一下代碼

if (count($res) <= 0) {
$this->displayError("404");
return;
}

這里我訪問(wèn)一篇不存在的一篇教程內(nèi)容,會(huì)返回一個(gè)404頁(yè)面

在SEO過(guò)程中,如何避免網(wǎng)站中出現(xiàn)軟404_web服務(wù)器_03


那么問(wèn)題來(lái)了,這里返回給了用戶一個(gè)404頁(yè)面,但是我們給的??HTTP狀態(tài)碼??卻是??200??。 雖然用戶沒(méi)有什么感覺(jué),但是要做SEO,對(duì)于搜索引擎來(lái)說(shuō),它會(huì)認(rèn)為你這是赤裸裸的欺騙。(其實(shí)我是一個(gè)SEO小白,我真不是存心要欺騙你的)

上面這種情況也就是我們今天要介紹的主角,軟404。所謂軟404,就是給用戶展現(xiàn)的是一個(gè)404的頁(yè)面,但是實(shí)際的HTTP狀態(tài)碼卻是200。

所以要解決軟404,其實(shí)很簡(jiǎn)單,就是返回給用戶一個(gè)404頁(yè)面的同時(shí),把響應(yīng)的狀態(tài)碼也改成404或者410即可。這個(gè)要看你的網(wǎng)站所用的編程語(yǔ)言了。然而不管是什么語(yǔ)言,最核心的還是HTTP協(xié)議。

對(duì)于PHP來(lái)說(shuō),其實(shí)是比較簡(jiǎn)單的,可以通過(guò) ??header?? 來(lái)修改響應(yīng)狀態(tài)碼

header("status: 404 Not Found");

修改之后,再請(qǐng)求相同地址的時(shí)候,在返回了自定義404頁(yè)面的同時(shí),狀態(tài)碼也變成了404。


總結(jié)

開(kāi)發(fā)維護(hù)一個(gè)網(wǎng)站真心不是容易,如果只是開(kāi)發(fā)出來(lái)對(duì)于一個(gè)程序員來(lái)說(shuō)不是什么難事。但是其中很多的細(xì)節(jié)是需要我們用心去做的。我個(gè)人是一個(gè)開(kāi)發(fā)者,對(duì)于SEO真心是一個(gè)小白,邊做邊學(xué)習(xí)邊修改吧。 如果不是開(kāi)發(fā)人員,要想做好一個(gè)網(wǎng)站,不論是用cms還是其他的框架,都希望能了解一下HTTP協(xié)議?,F(xiàn)在已經(jīng)進(jìn)入了HTTP2.0的時(shí)代了。有興趣也可以了解一下 ??HTTP2的前世今生?? 以及 ??HTTP1.1的不足??

推薦閱讀: