這是一個血淋淋的教訓,這么說一點也不過分。因為最近發生了一個重大問題,網站流量大幅下跌,跌了近80%了。由于事件發生之前做過一些工作,加了大量友鏈,而且外站權重都相當高,在那天還發生了一次掛馬事件,當然也即時解決了。還做了其它一些關鍵字內、外鏈優化等等。這樣使得查找問題的原因就變的難上加難。偶然的原因發現,百度收錄的鏈接開始出現錯誤,由于網站URL方式采用的目錄式結構,最后一個字符都是/,然而百度收錄的頁面卻無緣無故把這個線去掉了,而這種訪問方式,我并沒有做兼容。當時也查看了網站頁面上的重寫結果,沒有發現哪里頁面的鏈接出現過這種錯誤,那么百度里收錄的這些頁面從何而來?真的不得而知了??赡苁峭怄溊镉行┑刂钒涯莻€目錄后的斜線去掉了?不管它怎么收錄的了,盡快做了一下兼容性工作,因為那種錯誤鏈接會被轉到404頁面上去。剛剛又查了一下,發現了一點蹊蹺。
以下摘自百度百科:
代碼如下:
404對seo的影響
自定義404錯誤頁面是增強用戶體驗的很好的做法,但在應用過程中往往并未注意到對搜索引擎的影響,譬如:錯誤的服務器端配置導致返回“200”狀態碼或自定義404錯誤頁面使用Meta Refresh導致返回“302”狀態碼。正確設置的自定義404錯誤頁面,不僅應當能夠正確地顯示,同時,應該返回“404”錯誤代碼,而不是 “200”或“302”。雖然對訪問的用戶而言,HTTP狀態碼究竟是“404”還是“200”來說并沒有什么區別,但對搜索引擎這則是相當重要的。
搜索引擎蜘蛛在請求某個URL時得到“404”狀態回應時,即知道該URL已經失效,便不再索引該網頁,并向數據中心反饋將該URL表示的網頁從索引數據庫中刪除,當然,刪除過程有可能需要很長時間;而當搜索引擎得到“200”狀態碼時,則會認為該url是有效的,便會去索引,并會將其收錄到索引數據庫,這樣的結果便是這兩個不同的url具有完全相同的內容:自定義404錯誤頁面的內容,這會導致出現復制網頁問題。輕則被搜索引擎降權,重則會K掉網站。
而恰恰我發現這里服務器上nginx里404的配置就有這樣一個問題,訪問到無效地址的時候,跳轉到的404頁面返回狀態碼是200,汗了。怎么會這樣?
一個等號引發的血案
最后發現問題的原因是配置里多余的一個“=”導致的這個狀態碼錯誤。
現在網上大多數nginx的404配置寫法還是error_page 404 = /404.html; 注意這是個錯誤的寫法,正確的寫法是沒有這個等號的,就是由于這個等號的指引讓nginx將404的的錯誤進入鏈接都以200正常狀態碼顯示了自定義的404頁面,而這對普通用戶來說看上去無差異,然而給搜索引擎發出的信號卻是致命的。切忌切忌。因為此前的服務器,我一直都是用apache來做的,也是第一次遇到這個問題。改完后用工具檢查一下,已經正常了。
新聞熱點
疑難解答