公司新來的一位SEO向我質(zhì)疑說404頁面不能跳轉(zhuǎn)到首頁,說這樣會導(dǎo)致首頁會被K掉,還言之鑿鑿的說,夫唯也這么說過。落葉給他的建議是,遇到問題要多思考,SEO這個本來誤傳比較多,弄清楚404的原理,及一些狀態(tài)碼的含義,什么情況下會導(dǎo)致被誤判或弊端,思考清楚這些,誰怎么說已經(jīng)不重要了。
本文中分析一下各種常見的HTTP返回狀態(tài)含義及對應(yīng)的網(wǎng)站的出錯情況,同時也介紹一下,IIS服務(wù)器、apache服務(wù)器及一般虛擬主機(jī)上設(shè)置404錯誤頁的正確方法。
站長常需要關(guān)注的HTTP狀態(tài)及含義:
200 :頁面正常訪問時的返回HTTP狀態(tài)。當(dāng)一個頁面返回200狀態(tài)碼時,則表示告訴瀏覽器或者搜索引擎,該頁面是可以正常到達(dá)的。
404 :頁面找不到時,返回的HTTP狀態(tài)。SEO處理中如果想自定義404頁面,需要做到的是確保訪問錯誤頁時返回狀態(tài)為404,這樣搜索引擎才知道,這個頁面是找不到了。而通常很多站長朋友們之所以對文章開頭提到的認(rèn)為“404頁面自動跳轉(zhuǎn)到首頁會有問題”,原因通常是因為404頁面跳轉(zhuǎn)時設(shè)置不當(dāng),返回了200狀態(tài)碼又沒有發(fā)現(xiàn),結(jié)果搜索引擎抓取錯誤頁時看到的是200狀態(tài),就認(rèn)定網(wǎng)站上出現(xiàn)了大量的與首頁相同頁面,這種情況,被降權(quán)是顯然的了。有些站長圖省事,直接在IDC提供的虛擬主機(jī)后臺設(shè)置404頁面,并在頁面上放置了類似或者js方式的windwo.location跳轉(zhuǎn),結(jié)果是返回200狀態(tài)。
301 :頁面永久重定向時返回的HTTP狀態(tài)。目前公認(rèn)的最正確的跳轉(zhuǎn)方法,并且可以起到權(quán)重傳遞作用。一般在程序作跳轉(zhuǎn)時先發(fā)送301狀態(tài)即可。如PHP中發(fā)送:header(“HTTP/1.1 301 Moved Permanently”); ASP中發(fā)送Response.Status=“301 Moved Permanently”
302 :頁面臨時跳轉(zhuǎn)時返回的狀態(tài)?,F(xiàn)在普遍認(rèn)為使用302跳轉(zhuǎn)容易被搜索引擎視為作弊,據(jù)傳是早期302跳轉(zhuǎn)被濫用而留下的后遺癥。落葉不能算很老的站長,沒見過被濫用啥樣子,不過呢,302跳轉(zhuǎn)更多的是作為功能性跳轉(zhuǎn),基本目前的每一個網(wǎng)站程序中都會用到,如添加一篇文章,自動跳轉(zhuǎn)回列表頁;操作成功/失敗提示自動跳轉(zhuǎn)等。ASP中的response.redirect跳轉(zhuǎn),PHP中的普通header跳轉(zhuǎn)返回的都是302狀態(tài)。這些跳轉(zhuǎn),一般是在網(wǎng)站后臺操作時的功能性跳轉(zhuǎn),不會對SEO產(chǎn)生影響。但如果作為前臺頁面跳轉(zhuǎn),那就值得斟酌了。
500 :頁面代碼出錯時返回的狀態(tài)。通常站長朋友們經(jīng)常遇到標(biāo)題中提示“內(nèi)部服務(wù)器錯誤”,其實這種情況大多數(shù)是因為訪問的網(wǎng)站或者頁面ASP或者PHP等出現(xiàn)代碼錯誤,如語法錯誤、數(shù)據(jù)庫連接錯誤等,而恰好服務(wù)器環(huán)境關(guān)閉了出錯信息的輸出提示,所以在出錯時,站長看到的就是500狀態(tài)的“內(nèi)部服務(wù)器錯誤”。很多朋友在遇到這個問題時,搜索一翻,發(fā)現(xiàn)好多很專業(yè)的很專業(yè)的不知所云的文章,說了一大堆啥問題啥問題,而實際結(jié)果發(fā)現(xiàn),就是PHP文件某行代碼少了個分號。
常見的跳轉(zhuǎn)代碼返回的狀態(tài)碼:
1、靜態(tài)頁HTTP跳轉(zhuǎn):
跳轉(zhuǎn)代碼:
返回狀態(tài)碼:200
2、JS跳轉(zhuǎn)
跳轉(zhuǎn)代碼:
返回狀態(tài):200
3、JS延時跳轉(zhuǎn)
跳轉(zhuǎn)代碼:
function countDown(secs,surl){
//alert(surl);
tiao.innerText=secs;
if(--secs>0){
setTimeout("countDown)"+secs+",'"+surl+"')",1000);
}
else{
location.href=surl;
}
}
4、3秒后自動跳轉(zhuǎn)到PHPINFO頁面
返回狀態(tài)碼:200
5、ASP的跳轉(zhuǎn)
跳轉(zhuǎn)代碼:<% response.redirect %>
返回狀態(tài):302
6、PHP跳轉(zhuǎn)
跳轉(zhuǎn)代碼:
返回狀態(tài):302
了解到這幾個常見的HTTP狀態(tài)碼的所代表的含義,那在不同的環(huán)境下,應(yīng)該怎樣處理,以保證404頁設(shè)置正確呢?
IIS服務(wù)器上設(shè)置404頁面
把制作好的404頁面放在網(wǎng)站根目錄下,在IIS管理器中右鍵點(diǎn)擊需要設(shè)置404的站點(diǎn)的屬性,點(diǎn)擊“自定義錯誤”選項卡,在HTTP錯誤類型列表中找到404錯誤,進(jìn)行編輯,消息類型選擇“文件”,然后點(diǎn)擊“瀏覽”選擇網(wǎng)站根目錄下的404頁面。
原則上,該404頁面并非一定要放在網(wǎng)站根目錄下,放在網(wǎng)站的任何目錄下均可,亦可直接放到C:\WINDOWS\help\iisHelp\common\ 目錄下,并且文件名不一定需要叫404.htm
落葉做過測試,通過服務(wù)器上IIS這里設(shè)置的404頁面,只要設(shè)置方式是按如上操作的,即使404.htm是使用的原本會發(fā)送200狀態(tài)的靜態(tài)跳轉(zhuǎn)代碼或JS跳轉(zhuǎn)代碼,仍然能正常返回404狀態(tài)。
1、APACHE服務(wù)器上設(shè)置404頁面
訪問Apache目錄下的conf目錄下的extra目錄,記事本打開httpd-vhosts.conf,在子站點(diǎn)的配置文件中加上ErrorDocument 404 /404.html,然后做一個404.html放置在網(wǎng)站根目錄下,重啟APACHE服務(wù)即可生效。
具體示例如下:
ServerAdmin cmstong@qq.com
DocumentRoot "E:\AppServ\www\empirecms"
ServerName pmume.com
ServerAlias www.pmume.com
ErrorDocument 404 /404.html
ErrorLog "logs/dummy-host.x-error.log"
CustomLog "logs/dummy-host.x-access.log" common
2、IIS虛擬主機(jī)上設(shè)置404
目前國內(nèi)流傳的IIS下的偽靜態(tài)規(guī)則組件ISAPI_Rewrite都是試用版或者破解版,貌似都不能很好的支持301、404的重寫。所以沒辦法通過httpd.ini里面的偽靜態(tài)規(guī)則來實現(xiàn)404重寫。目前IIS虛擬主機(jī)設(shè)置404的較方便的方法,還是在IDC提供的虛擬主機(jī)管理后臺進(jìn)行404設(shè)置。但很多虛擬主機(jī)管理后臺的404設(shè)置功能并不是太理想,建議這類型的用戶404頁面中不要設(shè)置跳轉(zhuǎn),否則很可能導(dǎo)致的是404跳轉(zhuǎn)返回200狀態(tài),起到反作用。
有很多人想通過選擇404.asp或404.php,然后在404里面作些跳轉(zhuǎn),結(jié)果發(fā)現(xiàn)返回的是200狀態(tài)。其實這里還是老老實實選擇第4個吧。
3、Apache虛擬主機(jī)上設(shè)置404
根目錄下新建.htaccess文件,(一般APACHE虛擬主機(jī)根目錄下或者CMS都會提供這么一個文件,如果自己在WIN下創(chuàng)建是沒法成功的,會提示文件名不能為空。)
在里面規(guī)則后面加上ErrorDocument 404 /err404.html即可。
申請創(chuàng)業(yè)報道,分享創(chuàng)業(yè)好點(diǎn)子。點(diǎn)擊此處,共同探討創(chuàng)業(yè)新機(jī)遇!