301重定向?qū)崿F(xiàn)方法和對(duì)網(wǎng)站優(yōu)化的作用
作者:晉城網(wǎng)站建設(shè) 日期:2012-02-16
301重定向(也叫301轉(zhuǎn)向,301跳轉(zhuǎn))對(duì)網(wǎng)站優(yōu)化所起的作用是不可忽視的,尤其是針對(duì)SE(搜索引擎)處理網(wǎng)站頁(yè)面權(quán)重的時(shí)候,更加顯得重要。網(wǎng)站換了新域名,默認(rèn)首頁(yè)需要跳轉(zhuǎn)等,從SEO角度來(lái)說(shuō),我們都建議使用301重定向,而不是JS跳轉(zhuǎn)或METAREFRESH或302轉(zhuǎn)向,這些很容易引來(lái)SE的懲罰。
什么是301重定向呢?
301重定向是當(dāng)用戶或搜索引擎向網(wǎng)站服務(wù)器發(fā)出瀏覽請(qǐng)求時(shí),服務(wù)器返回的HTTP數(shù)據(jù)流中頭信息(header)中的狀態(tài)碼的一種,表示本網(wǎng)頁(yè)永久性轉(zhuǎn)移到另一個(gè)地址。其它常見(jiàn)的狀態(tài)碼還包括,200表示一切正常,404網(wǎng)頁(yè)找不到,302暫時(shí)轉(zhuǎn)向,等等。
為什么要用301轉(zhuǎn)向?
網(wǎng)址轉(zhuǎn)向方法主要包括:301轉(zhuǎn)向,302轉(zhuǎn)向,JavaScript轉(zhuǎn)向,PHP/ASP/CGI轉(zhuǎn)向,METAREFRESH網(wǎng)頁(yè)META刷新等。302轉(zhuǎn)向可能會(huì)有URL規(guī)范化問(wèn)題。其它方法都是常用的作弊手法,當(dāng)然不是說(shuō)不可以正當(dāng)?shù)赜茫椒ū旧頉](méi)有錯(cuò),但被作弊者用多了,搜索引擎對(duì)這些可疑的轉(zhuǎn)向都很敏感。何必冒險(xiǎn)呢。
關(guān)于301轉(zhuǎn)向和網(wǎng)址規(guī)范化問(wèn)題,大家可以去閱讀下ZAC寫(xiě)的文章。本文,僅僅討論在ASP環(huán)境下,如何設(shè)置301重定向問(wèn)題;其他語(yǔ)言亦可參考。
我們知道,網(wǎng)站的首頁(yè)一般有以下幾種:
http://piaoyi.org
http://www.piaoyi.org
http://piaoyi.org/index.asp
http://www.piaoyi.org/index.asp
…… 很自然的,以上的這些網(wǎng)址形式都指向到了一個(gè)網(wǎng)站,如果在搜索引擎中都啟用這些形式,那么,網(wǎng)頁(yè)權(quán)重,PR都會(huì)分散到這幾個(gè)網(wǎng)址上,雖然,它們都是一個(gè)網(wǎng)站,而這不是我們想要的結(jié)果。那么,如何將以上的首頁(yè)形式都定向到自己想要的網(wǎng)址上呢,比如http://www.piaoyi.org,從而使得這些分散的網(wǎng)頁(yè)權(quán)重,PR都集中到www.piaoyi.org上。這里就需要使用301永久重定向了。 ASP語(yǔ)言下,我們需要在默認(rèn)首頁(yè),如index.asp頂部最上方加入以下代碼: <%
Dimdm,sn
dm=Request.ServerVariables("Server_name")'獲取域名
'這里的3是指www的長(zhǎng)度
ifleft(dm,3)<>"www"then
Response.Status="301MovedPermanently"
Response.AddHeader"Location","http://www.piaoyi.org"
Response.End
endif
%>
這里的代碼是經(jīng)過(guò)flymorn加工后的,您也可以根據(jù)實(shí)際需要對(duì)本代碼進(jìn)行適當(dāng)?shù)男薷囊赃m合你需求的樣式。本代碼自動(dòng)校驗(yàn)沒(méi)有輸入www的,301跳轉(zhuǎn)到www.piaoyi.org這個(gè)網(wǎng)址上,從而使得網(wǎng)頁(yè)權(quán)重得到累加,達(dá)到SEO優(yōu)化的目的。 但這里出現(xiàn)一個(gè)問(wèn)題,如果有鏈接指向到http://www.piaoyi.org/index.asp(比如站內(nèi)鏈接),那么搜索引擎也同樣會(huì)給這個(gè)網(wǎng)址形式加分,雖然index.asp是默認(rèn)首頁(yè),但我們希望的是把所有權(quán)重都給與http://www.piaoyi.org這個(gè)形式。有人說(shuō),這兩個(gè)形式不是都一樣嗎?不一樣。比如:http://www.023ff.com的PR為0,而http://www.023ff.com/index.asp的PR為2。從這點(diǎn)可以看出,SE是給與是否有index.asp的網(wǎng)址形式以不同的權(quán)重的。而使用Request.ServerVariables("SCRIPT_NAME")或Request("url")獲取到的后綴無(wú)論輸入時(shí)是否帶有index.asp都一律返回index.asp,從而導(dǎo)致無(wú)法判斷,也無(wú)法使用301重定向,當(dāng)然這是指僅asp語(yǔ)言環(huán)境。 目前解決方法就是,利用js獲取當(dāng)前網(wǎng)址window.location.href,然后把這個(gè)當(dāng)前網(wǎng)址寫(xiě)入cookies;asp讀取這個(gè)cookies,從而判斷網(wǎng)址中是否包含index.asp,如果包含,就使用301重定向。建議:在任何鏈接中避免有直接指向index.asp的形式,包括外鏈及內(nèi)鏈,尤其是內(nèi)鏈。這只是一個(gè)折中的方法。針對(duì)該問(wèn)題,希望與各位高手一起討論。如果您有其他解決的方法,請(qǐng)留下您的評(píng)論。 利用js通過(guò)cookies給asp傳遞網(wǎng)址的代碼如下: <scriptlanguage="javascript">
varurl=window.location.href.toLowerCase();//小寫(xiě)
document.cookie="urlck"+"="+escape(url);
</script> <%
Dimsn
sn=request.cookies("urlck")'獲取后綴
response.cookies("urlck")=""'清空cookies ifright(sn,11)="default.asp"then
Response.Status="301MovedPermanently"
Response.AddHeader"Location","http://www.piaoyi.org"
Response.End
endif
%> 但是很遺憾,如果這些網(wǎng)址形式不是實(shí)際上的人為輸入,而是搜索引擎訪問(wèn)的結(jié)果,搜索引擎又是忽略JS的,也就是說(shuō),js里賦值的cookie并不能被SE識(shí)別,從而導(dǎo)致也無(wú)法使用301跳轉(zhuǎn)。這個(gè)問(wèn)題有待解決。 其他語(yǔ)言下的301重定向: 1、Unix/Linux+Apache主機(jī),在.htaccess文件中增加301轉(zhuǎn)向指令,采用mod_rewrite技術(shù),如:PHP代碼 Options+FollowSymLinks
RewriteEngineon
RewriteCond%{HTTP_HOST}^www.piaoyi.org[NC]
RewriteRule^(.*)$http://piaoyi.org/$1[L,R=301] 2、Window+IIS主機(jī),在服務(wù)器軟件的系統(tǒng)管理員配置中設(shè)置,方法: 打開(kāi)Internet信息服務(wù)管理器,在欲重定向的網(wǎng)頁(yè)或目錄上按右鍵,選中“重定向到URL”,在對(duì)話框中輸入目標(biāo)頁(yè)面的地址,記得選中“資源的永久重定向”->“應(yīng)用”。 3、用PHP/ASP.NET實(shí)現(xiàn)301轉(zhuǎn)向(HTML無(wú)法做301轉(zhuǎn)向),方法如下: 1)用PHP實(shí)現(xiàn) PHP代碼
<?Header("HTTP/1.1301MovedPermanently");
Header("Location:http://piaoyi.org");?> 2)用ASP.NET實(shí)現(xiàn) ASP/VisualBasic代碼
<scriptrunat="server">
privatevoidPage_Load(objectsender,System.EventArgse)
{
Response.Status="301MovedPermanently";
Response.AddHeader("Location","http://piaoyi.org");
}
</script> 經(jīng)過(guò)這些設(shè)置后,301轉(zhuǎn)向應(yīng)該可以配置OK啦,如果想檢查一下是否正確,則可以使用網(wǎng)上提供ServerHeader檢查工具,如CheckServerHeadersTool-HTTPStatusCodesChecker。 用以上檢測(cè)http狀態(tài)碼工具,可以做個(gè)簡(jiǎn)單的檢查,如檢查http://023ff.com,返回的結(jié)果如下: #1ServerResponse:http://023ff.com
HTTPStatusCode:HTTP/1.1301MovedPermanently
Connection:close
Date:Mon,25Feb200801:54:09GMT
Server:Microsoft-IIS/6.0
X-Powered-By:ASP.NET
Location:http://www.023ff.com
Content-Length:0
Content-Type:text/html
Set-Cookie:ASPSESSIONIDACBCSBDR=FCJELLLALFNPOCMBNMOLMJHN;path=/
Cache-control:private
RedirectTarget:http://www.023ff.com #2ServerResponse:http://www.023ff.com
HTTPStatusCode:HTTP/1.1200OK
Connection:close
Date:Mon,25Feb200801:54:13GMT
Server:Microsoft-IIS/6.0
X-Powered-By:ASP.NET
Content-Length:29330
Content-Type:text/html
Set-Cookie:ASPSESSIONIDACBCSBDR=GCJELLLAECPBADKMADAJOBLC;path=/
Cache-control:private
注意以上返回的結(jié)果中第二行“HTTPStatusCode:HTTP/1.1301MovedPermanently”,說(shuō)明這個(gè)網(wǎng)址采用了301永久重定向功能了,設(shè)置成功。如果您對(duì)本文有任何看法,歡迎留下您的評(píng)論,以便我們一起探討。
http://www.piaoyi.org
http://piaoyi.org/index.asp
http://www.piaoyi.org/index.asp
…… 很自然的,以上的這些網(wǎng)址形式都指向到了一個(gè)網(wǎng)站,如果在搜索引擎中都啟用這些形式,那么,網(wǎng)頁(yè)權(quán)重,PR都會(huì)分散到這幾個(gè)網(wǎng)址上,雖然,它們都是一個(gè)網(wǎng)站,而這不是我們想要的結(jié)果。那么,如何將以上的首頁(yè)形式都定向到自己想要的網(wǎng)址上呢,比如http://www.piaoyi.org,從而使得這些分散的網(wǎng)頁(yè)權(quán)重,PR都集中到www.piaoyi.org上。這里就需要使用301永久重定向了。 ASP語(yǔ)言下,我們需要在默認(rèn)首頁(yè),如index.asp頂部最上方加入以下代碼: <%
Dimdm,sn
dm=Request.ServerVariables("Server_name")'獲取域名
'這里的3是指www的長(zhǎng)度
ifleft(dm,3)<>"www"then
Response.Status="301MovedPermanently"
Response.AddHeader"Location","http://www.piaoyi.org"
Response.End
endif
%>
這里的代碼是經(jīng)過(guò)flymorn加工后的,您也可以根據(jù)實(shí)際需要對(duì)本代碼進(jìn)行適當(dāng)?shù)男薷囊赃m合你需求的樣式。本代碼自動(dòng)校驗(yàn)沒(méi)有輸入www的,301跳轉(zhuǎn)到www.piaoyi.org這個(gè)網(wǎng)址上,從而使得網(wǎng)頁(yè)權(quán)重得到累加,達(dá)到SEO優(yōu)化的目的。 但這里出現(xiàn)一個(gè)問(wèn)題,如果有鏈接指向到http://www.piaoyi.org/index.asp(比如站內(nèi)鏈接),那么搜索引擎也同樣會(huì)給這個(gè)網(wǎng)址形式加分,雖然index.asp是默認(rèn)首頁(yè),但我們希望的是把所有權(quán)重都給與http://www.piaoyi.org這個(gè)形式。有人說(shuō),這兩個(gè)形式不是都一樣嗎?不一樣。比如:http://www.023ff.com的PR為0,而http://www.023ff.com/index.asp的PR為2。從這點(diǎn)可以看出,SE是給與是否有index.asp的網(wǎng)址形式以不同的權(quán)重的。而使用Request.ServerVariables("SCRIPT_NAME")或Request("url")獲取到的后綴無(wú)論輸入時(shí)是否帶有index.asp都一律返回index.asp,從而導(dǎo)致無(wú)法判斷,也無(wú)法使用301重定向,當(dāng)然這是指僅asp語(yǔ)言環(huán)境。 目前解決方法就是,利用js獲取當(dāng)前網(wǎng)址window.location.href,然后把這個(gè)當(dāng)前網(wǎng)址寫(xiě)入cookies;asp讀取這個(gè)cookies,從而判斷網(wǎng)址中是否包含index.asp,如果包含,就使用301重定向。建議:在任何鏈接中避免有直接指向index.asp的形式,包括外鏈及內(nèi)鏈,尤其是內(nèi)鏈。這只是一個(gè)折中的方法。針對(duì)該問(wèn)題,希望與各位高手一起討論。如果您有其他解決的方法,請(qǐng)留下您的評(píng)論。 利用js通過(guò)cookies給asp傳遞網(wǎng)址的代碼如下: <scriptlanguage="javascript">
varurl=window.location.href.toLowerCase();//小寫(xiě)
document.cookie="urlck"+"="+escape(url);
</script> <%
Dimsn
sn=request.cookies("urlck")'獲取后綴
response.cookies("urlck")=""'清空cookies ifright(sn,11)="default.asp"then
Response.Status="301MovedPermanently"
Response.AddHeader"Location","http://www.piaoyi.org"
Response.End
endif
%> 但是很遺憾,如果這些網(wǎng)址形式不是實(shí)際上的人為輸入,而是搜索引擎訪問(wèn)的結(jié)果,搜索引擎又是忽略JS的,也就是說(shuō),js里賦值的cookie并不能被SE識(shí)別,從而導(dǎo)致也無(wú)法使用301跳轉(zhuǎn)。這個(gè)問(wèn)題有待解決。 其他語(yǔ)言下的301重定向: 1、Unix/Linux+Apache主機(jī),在.htaccess文件中增加301轉(zhuǎn)向指令,采用mod_rewrite技術(shù),如:PHP代碼 Options+FollowSymLinks
RewriteEngineon
RewriteCond%{HTTP_HOST}^www.piaoyi.org[NC]
RewriteRule^(.*)$http://piaoyi.org/$1[L,R=301] 2、Window+IIS主機(jī),在服務(wù)器軟件的系統(tǒng)管理員配置中設(shè)置,方法: 打開(kāi)Internet信息服務(wù)管理器,在欲重定向的網(wǎng)頁(yè)或目錄上按右鍵,選中“重定向到URL”,在對(duì)話框中輸入目標(biāo)頁(yè)面的地址,記得選中“資源的永久重定向”->“應(yīng)用”。 3、用PHP/ASP.NET實(shí)現(xiàn)301轉(zhuǎn)向(HTML無(wú)法做301轉(zhuǎn)向),方法如下: 1)用PHP實(shí)現(xiàn) PHP代碼
<?Header("HTTP/1.1301MovedPermanently");
Header("Location:http://piaoyi.org");?> 2)用ASP.NET實(shí)現(xiàn) ASP/VisualBasic代碼
<scriptrunat="server">
privatevoidPage_Load(objectsender,System.EventArgse)
{
Response.Status="301MovedPermanently";
Response.AddHeader("Location","http://piaoyi.org");
}
</script> 經(jīng)過(guò)這些設(shè)置后,301轉(zhuǎn)向應(yīng)該可以配置OK啦,如果想檢查一下是否正確,則可以使用網(wǎng)上提供ServerHeader檢查工具,如CheckServerHeadersTool-HTTPStatusCodesChecker。 用以上檢測(cè)http狀態(tài)碼工具,可以做個(gè)簡(jiǎn)單的檢查,如檢查http://023ff.com,返回的結(jié)果如下: #1ServerResponse:http://023ff.com
HTTPStatusCode:HTTP/1.1301MovedPermanently
Connection:close
Date:Mon,25Feb200801:54:09GMT
Server:Microsoft-IIS/6.0
X-Powered-By:ASP.NET
Location:http://www.023ff.com
Content-Length:0
Content-Type:text/html
Set-Cookie:ASPSESSIONIDACBCSBDR=FCJELLLALFNPOCMBNMOLMJHN;path=/
Cache-control:private
RedirectTarget:http://www.023ff.com #2ServerResponse:http://www.023ff.com
HTTPStatusCode:HTTP/1.1200OK
Connection:close
Date:Mon,25Feb200801:54:13GMT
Server:Microsoft-IIS/6.0
X-Powered-By:ASP.NET
Content-Length:29330
Content-Type:text/html
Set-Cookie:ASPSESSIONIDACBCSBDR=GCJELLLAECPBADKMADAJOBLC;path=/
Cache-control:private
注意以上返回的結(jié)果中第二行“HTTPStatusCode:HTTP/1.1301MovedPermanently”,說(shuō)明這個(gè)網(wǎng)址采用了301永久重定向功能了,設(shè)置成功。如果您對(duì)本文有任何看法,歡迎留下您的評(píng)論,以便我們一起探討。
上一篇
下一篇

Tags: ,