301永久重定向的方法
這篇文章可看可不看,以前講301重定向都是回復(fù)別人的評(píng)論,而沒(méi)在自己博客上發(fā)布過(guò)一篇詳細(xì)關(guān)于301重定向的文章,在我印象中,已經(jīng)有好幾位朋友讓我發(fā)布一篇關(guān)于301重定向的文章。索性今天我就詳細(xì)寫(xiě)一下吧
這篇文章可看可不看,以前講301重定向都是回復(fù)別人的評(píng)論,而沒(méi)在自己博客上發(fā)布過(guò)一篇詳細(xì)關(guān)于301重定向的文章,在我印象中,已經(jīng)有好幾位朋友讓我發(fā)布一篇關(guān)于301重定向的文章。索性今天我就詳細(xì)寫(xiě)一下吧,也許此文對(duì)你有用,也許此文對(duì)大多數(shù)人已經(jīng)是再常見(jiàn)不過(guò)的問(wèn)題了,你說(shuō)是吧weiking 。
301永久重定向?qū)EO 無(wú)任何不好的影響,而且網(wǎng)頁(yè)A 的關(guān)鍵詞排名和PR 級(jí)別都會(huì)傳達(dá)給網(wǎng)頁(yè)B ,網(wǎng)站更換了域名,表示本網(wǎng)頁(yè)永久性轉(zhuǎn)移到另一個(gè)地址,對(duì)于搜索引擎優(yōu)化|SEO來(lái)說(shuō),給搜索引擎一個(gè)友好的信息,告訴它此頁(yè)面已永久重定向,避免搜索引擎找不到頁(yè)面。
什么情況下使用301重定向
1:網(wǎng)站更換域名時(shí),通過(guò)301永久重定向?qū)⑴f域名重定向至新域名,挽回流量損失和SEO 。
2:當(dāng)出于需要?jiǎng)h除網(wǎng)站中的某些目錄時(shí),比如我要?jiǎng)h除我博客下的博客導(dǎo)航,這時(shí)就可以用301永久重定向到網(wǎng)站首頁(yè)。
3:如果你有多個(gè)閑置域名時(shí)需要指向同一網(wǎng)站時(shí),通過(guò)301永久重定向可以實(shí)現(xiàn)。
4:你打算實(shí)現(xiàn)網(wǎng)址規(guī)范化。
如何實(shí)現(xiàn)網(wǎng)址規(guī)范化
我重點(diǎn)講講這個(gè)網(wǎng)址規(guī)范化,因?yàn)檫@是大家很容易忽略的問(wèn)題。例如我的域名,如果不做任何設(shè)置,它默認(rèn)會(huì)產(chǎn)生四個(gè)網(wǎng)址:
,(1)網(wǎng)站域名(2)網(wǎng)站域名(3)網(wǎng)站域名/default.html(4)網(wǎng)站域名/default.html
如果不做301重定向會(huì)導(dǎo)致:你站點(diǎn)主域名的pr 值分散到其他幾個(gè)URL 了。先查詢(xún)上面4個(gè)網(wǎng)址的PR 值,如果結(jié)果一致,說(shuō)明網(wǎng)站沒(méi)有規(guī)范化問(wèn)題;如果不一致,表明有規(guī)范化問(wèn)題。這時(shí)候我們就需要使用301永久定向技術(shù)來(lái)實(shí)現(xiàn)網(wǎng)址的規(guī)范化了。需要注意的是,帶www 和不帶www 的兩個(gè)網(wǎng)址,www 其實(shí)是個(gè)二級(jí)域名。
我所知道的常用的301重定向設(shè)置方法有2種。一個(gè)是通過(guò)IIS 界面直接設(shè)置,另外一個(gè)是通過(guò)代碼來(lái)實(shí)現(xiàn)301重定向設(shè)置。盧松松建議用服務(wù)器組件來(lái)做重定向,我以下例子以我的域名網(wǎng)站域名301重定向到網(wǎng)站域名進(jìn)行講解。
1:IIS 服務(wù)器實(shí)現(xiàn)301 重定向
打開(kāi)IIS ,右鍵-屬性-網(wǎng)站-IP 地址哪里點(diǎn)編輯增加一個(gè)站點(diǎn),增加一個(gè)站點(diǎn),綁定的一下主機(jī)頭,也可以綁定多個(gè)閑置域名。如圖所示:
,
打開(kāi)IIS ,首先新建立一個(gè)站點(diǎn),隨便對(duì)應(yīng)一個(gè)目錄E:wwwroot01web。該目錄下只需要2個(gè)文件,一個(gè) default.html ,一個(gè)404.htm 。在欲重定向的網(wǎng)頁(yè)或目錄上按右鍵;選中“重定向到URL ”;在對(duì)話框中輸入目標(biāo)頁(yè)面的地址;切記,記得選 中“資源的永久重定向”;當(dāng)然,最后要點(diǎn)擊“應(yīng)用”,完成。如下圖所示:
,
2:Apache 服務(wù)器實(shí)現(xiàn)301 重定向
在Apache 中,有個(gè)很重要的文件.htaccess ,通過(guò)對(duì)它的設(shè)置,可以實(shí)現(xiàn)很多強(qiáng)大的功能,301 重定向只是其中之一。找到redirect permanent / http://網(wǎng)站域名:
redirect permanent /old.html http://網(wǎng)站域名:修改這句即可。
3:在.htaccess 文件中增加301重定向指令
采用“mod_rewrite”技術(shù),形如:
RewriteEngine on
RewriteRule ^(.*)$ http://網(wǎng)站域名/$1 [R=301,L]
,4:適用于使用Unix 網(wǎng)絡(luò)服務(wù)器的用戶(hù)
通過(guò)此指令通知搜索引擎的spider 你的站點(diǎn)文件不在此地址下。這是較為常用的辦法。
形如:Redirect 301 / http://網(wǎng)站域名/
5:在服務(wù)器軟件的系統(tǒng)管理員配置區(qū)完成301重定向
適用于使用Window 網(wǎng)絡(luò)服務(wù)器的用戶(hù)
6:綁定/本地DNS
如果具有對(duì)本地DNS 記錄進(jìn)行編輯修改的權(quán)限,則只要添加一個(gè)記錄就可以解決此問(wèn)題。若無(wú)此權(quán)限,則可要求網(wǎng)站托管服務(wù)商對(duì)DNS 服務(wù)器進(jìn)行相應(yīng)設(shè)置。
DNS 服務(wù)器的設(shè)置
若要將blog. 網(wǎng)站域名指向網(wǎng)站域名,則只需在DNS 服務(wù)中應(yīng)增加一個(gè)別名記錄,可寫(xiě)成:blog IN CNAME 網(wǎng)站域名。
如需配置大量的虛擬域名,則可寫(xiě)成:* IN CNAME 網(wǎng)站域名. 這樣就可將所有未設(shè)置的以網(wǎng)站域名結(jié)尾的記錄全部重定向到網(wǎng)站域名上。
7:用ASP/PHP實(shí)現(xiàn)301重定向:
ASP :
,Response.Status="301 Moved Permanently"
Response.AddHeader "Location","http://網(wǎng)站域名/"
Response.End
PHP :
header("HTTP/1.1 301 Moved Permanently");
header("Location:http://網(wǎng)站域名/");
exit();
常用的跳轉(zhuǎn)方式
301代表永久性轉(zhuǎn)移,301重定向是網(wǎng)頁(yè)更改地址后對(duì)搜索引擎友好的最好方法,只要不是暫時(shí)搬移的情況, 都建議使用301來(lái)做轉(zhuǎn)址。
302代表 暫時(shí)性轉(zhuǎn)移,只有當(dāng)一個(gè)網(wǎng)站或網(wǎng)頁(yè)在24到48小時(shí)之內(nèi)臨時(shí)移到其它位置的情況下才能使用該命令。能夠?qū)?02重定向具備優(yōu)異處理能力的只有 Google ,在前些年,不少搞SEO 曾廣泛應(yīng)用這項(xiàng)技術(shù)作弊,但也很容易遭受懲罰。
用HTML 跳轉(zhuǎn):, 表示5秒后自動(dòng)跳轉(zhuǎn)到首頁(yè),你也可以把時(shí)間設(shè)置的更短,但也很容易被搜尋引擎容易誤判為spam 而遭到懲罰。
用javascript 跳 轉(zhuǎn):
轉(zhuǎn)發(fā)和重定向的區(qū)別
,一句話,轉(zhuǎn)發(fā)是服務(wù)器行為,重定向是客戶(hù)端行為。轉(zhuǎn)發(fā)時(shí)一次請(qǐng)求,重定向是2次請(qǐng)求,轉(zhuǎn)發(fā)地址欄不會(huì)發(fā)生改變,重定向地址欄會(huì)改變,轉(zhuǎn)發(fā)在項(xiàng)目?jī)?nèi),重定向 可以轉(zhuǎn)到項(xiàng)目外。當(dāng)使用轉(zhuǎn)發(fā)時(shí),JSP 容器將使用一個(gè)內(nèi)部的方法來(lái)調(diào)用目標(biāo)頁(yè)面,新的頁(yè)面繼續(xù)處理同一個(gè)請(qǐng)求,而瀏覽器將不會(huì)知道這個(gè)過(guò)程。 與之相反,重定向方式的含義是第一個(gè)頁(yè)面通知瀏覽器發(fā)送一個(gè)新的頁(yè)面請(qǐng)求。
怎么選擇是重定向還是轉(zhuǎn)發(fā)
通常情況下轉(zhuǎn)發(fā)更快,而且能保持request 內(nèi)的對(duì)象,所以他是第一選擇。但是由于在轉(zhuǎn)發(fā)之后,瀏覽器中URL 仍然指向開(kāi)始頁(yè)面,此時(shí)如果重載當(dāng)前頁(yè) 面,開(kāi)始頁(yè)面將會(huì)被重新調(diào)用。如果你不想看到這樣的情況,則選擇轉(zhuǎn)發(fā)。
動(dòng)態(tài)頁(yè)面進(jìn)行301重定向的權(quán)重傳遞是最優(yōu)化的,代碼如下:
<
Response.Status="301 Moved Permanently"
Response.AddHeader"Location","http://網(wǎng)站域名"
Response.End
>
,
if ( $_SERVER['SERVER_NAME'] == '不帶www 的網(wǎng)站域名' 如lzzf5.com.com){ header("HTTP/1.1 301 MovedPermanently");
header("Location: http://網(wǎng)站域名");
exit();
}
?>
,
如果我想把http://不帶www 的網(wǎng)站域名 權(quán)重轉(zhuǎn)移到 http://網(wǎng)站域名 該怎么操作呢? 很簡(jiǎn)單, 情況下面代碼.
<
if Request.ServerVariables("Http_Host")="不帶www 的網(wǎng)站域名" then
Response.Status="301 Moved Permanently"
Response.AddHeader"Location","http://網(wǎng)站域名"
Response.End
end if
>
if ( $_SERVER['SERVER_NAME'] == '不帶www 的網(wǎng)站域名'){
header("HTTP/1.1 301 MovedPermanently");
header("Location: http://網(wǎng)站域名");
exit();
}
?>
,我想做完美的301跳轉(zhuǎn), 也就是子頁(yè)面跳轉(zhuǎn)到對(duì)應(yīng)的子頁(yè)面怎么操作呢? 同級(jí)域名跳轉(zhuǎn)例如:
已經(jīng)有網(wǎng)友成功驗(yàn)證, 這個(gè)方法是可行的. 效果比動(dòng)態(tài)的301跳轉(zhuǎn)來(lái)的慢一些. <
netpath = "http://網(wǎng)站域名"
netpath =netpath&Request.ServerVariables("PATH_INFO")
response.write netpath
Response.Status="301 Moved Permanently"
Response.AddHeader "Location",netpath
Response.End
>
非同級(jí)域名跳轉(zhuǎn)例如:
也不難, 如下.
<
Dim dm,sn
dm=Request.ServerVariables("Server_name")'獲取域名
' 這里的3是指www 的長(zhǎng)度
if left(dm,3)<>"www" then
Response.Status="301 Moved Permanently"
Response.AddHeader "Location", GetUrl()
Response.End
end if
' 獲取當(dāng)前Url 參數(shù)的函數(shù)
Function GetUrl()
Dim ScriptAddress,Servername,qs
ScriptAddress = CStr(Request.ServerVariables("SCRIPT_NAME")) Servername =CStr(Request.ServerVariables("Server_Name"))
qs=Request.QueryString
if qs<>"" then
GetUrl ="http://www."& Servername& ScriptAddress &"?"&qs
else
GetUrl ="http://www."& Servername& ScriptAddress
end if
End Function
>