網頁定向
我們在網站建設中,時常會遇到需要網頁重定向的情況:
1.網站調整(如改變網頁目錄結構);
2.網頁被移到一個新地址;
3.網頁擴展名改變(如應用需要把.php改成.Html或.shtml)。
這種情況下,如果不做重定向,則用戶收藏夾或搜索引擎數據庫中舊地址隻能讓訪問客戶得到一個404頁面錯誤信息,訪問流量白白喪失;再者某些注冊了多個域名的網站,也需要通過重定向讓訪問這些域名的用戶自動跳轉到主站點等。
詳細介紹
常用的重定向方式有:301redirect、302redirect與meta fresh。
301redirect
301代表永久性轉移(PermanentlyMoved),301重定向是網頁更改地址後對搜索引擎友好的最好方法,隻要不是暫時搬移的情況,都建議使用301來做轉址。
302redirect
302代表暫時性轉移(Temporarily Moved),在前些年,不少Black Hat SEO(黑帽SEO)曾廣泛應用這項技術作弊,目前,各大主要搜索引擎均加強了打擊力度,像Google前些年對域名之王(Business)以及近來對BMW德國網站的懲罰。即使網站客觀上不是spam,也很容易被搜尋引擎容易誤判為spam而遭到懲罰。
meta fresh
這在2000年前比較流行,不過現在已很少見。其具體是通過網頁中的meta指令,在特定時間後重定向到新的網頁,如果延遲的時間太短(約5秒之内),會被判斷為spam。
方法
301Redirect實現網頁重定向
IIS服務器實現301重定向
打開internet信息服務管理器,在欲重定向的網頁或目錄上按右鍵
選擇“重定向到URL”
在“重定向到”輸入框中輸入要跳轉到的目标網頁的URL地址
選中“資源的永久重定向”(切記)
最後點擊“應用”
Apache服務器實現301重定向
相比較來說,Apache實現起來要比IIS簡單多了。在Apache中,有個很重要的文件.htaccess,通過對它的設置,可以實現很多強大的功能,301重定向隻是其中之一。
Redirect permanent/http://www.bloghuman.com/ (将目錄下内容重定向到http://www.bloghuman.com/)
redirect permanent/index.php http://www.bloghuman.com/index.php?go=category_6(将網頁index.php重定向到http://www.bloghuman.com/index.php?go=category_6)
通過合理地配置重定向參數中的正則表達式,可以實現更複雜的匹配。有興趣的朋友可參考本站Apache手冊。
PHP下的301重定向
Header("HTTP/1.1 301 Moved Permanently" );
Header("Location: http://www.bloghuman.com");
?>
ASP下的301重定向
<%@ Language=VBScript%>
<%
Response.Status="301 Moved Permanently"
Response.AddHeader "Location","http://www.bloghuman.com"
%>
ASP .NET下的301重定向
private void Page_Load(object sender, System.EventArgs e)
{
Response.Status = "301 Moved Permanently";
Response.AddHeader ("Location","http://www.bloghuman.com");
}
ColdFusion下的301重定向
<.cfheader statuscode="301"statustext="Moved permanently">
<.cfheader name="Location"value="http://www.new-url.com">
舊域名重定向到新域名
創建一個.htaccess文件,并将下面提供的代碼寫入文件内,它可以确保舊域名所有的目錄或者網頁正确的跳轉到新域名内。
記住.htaccess文件一定要放在舊網站的根目錄下,并且新網站要和舊網站保持相同的目錄結構及網頁文件
Options +FollowSymLinks
RewriteEngine on
RewriteRule(.*)http://www.domain.com/$1[R=301,L]
請将上面的www.domain.com修改成你想要跳轉到的域名。
此外,這裡建議大家歸總舊網站的外部鍊接,并聯系相應的站點修改導入鍊鍊的URL,以指向新站點。
域名301重定向到www的二級域名
在以前的文章中我反複提及過:www.domain.com是domain.com域下的一個二級域名,并對二級域名和一級目錄之間如何選擇以及網站結構優化做了一個詳細的分析,有興趣的可以讀一下兩篇文章,網站結構優化是SEO中最重要。
OK,繼續域301跳轉到www二級域的實現方式:
創建一個.htaccess文件,并将下面提供的代碼寫入文件内,它可以确保所有來自對domain.com的請求都轉向到對www.domain.com進行請求。
Options+FollowSymlinks
RewriteEngine on
rewritecond %{http_host} ^domain.com [nc]
rewriterule ^(.*)$ http://www.domain.com/$1 [r=301,nc]
請将上面的domain.com和www.domain.com修改成你想要跳轉到的域名。
注意:.htaccess文件隻有在使用安裝有Mod Rewrite模塊的Apache作為WEB服務器的Linux主機上才能起作用
檢測工具
配置完成後,一定認真檢查一下是否正确。Internet有很多類似的Server Header檢查工具,如Check Server Headers Tool - HTTP Status Codes Checker
網站302重定向使用不當導緻被GOOGLE懲罰
Business.com是網上最大的商業搜索引擎和分類目錄,以專業提供商業信息而享負盛名,包括近19萬網頁。若以“business”為關鍵詞在Google中進行搜索,該網站名列第一。不過在9月5日,Business.com遇到一件蹊跷之事:它的首頁由PR8變成了PR0,而且Google搜索結果中找不到首頁。好在被“蒸發”的隻是首頁,不過慶幸的是第二天首頁又回到了Google的搜索結果,但PR仍舊為0。
Business.com的問題出在它的重定向命令上。該網站讓business.com跳轉到www.business.com,這種重定向本該是永久性的。我們知道,301屬于永久性重定向,而302則屬于臨時性重定向,隻有當一個網站或網頁在24到48小時之内臨時移到其它位置的情況下才能使用該命令。但Business.com卻錯誤地使用了“HTTP/1.1302 Object Moved”狀态碼。
普遍現象
其實網站重定向極為普遍,譬如不滿意原來的域名而申請了一個新域名;買下容易被人錯拼的域名,防止客戶因為拼錯URL而找不到網站,等等。可是,很多人卻會由于使用了錯誤的重定向狀态碼而遭“滅站之災”,就象Business.com。盡管他們的重定向理由充分合理,然而若使用不當,則可能被Google誤認為是利用多個域名指向同一網站,那麼你的網站就會被封掉,罪名是“利用重複的内容來幹擾Google搜索結果的網站排名”。Business.com就是最好的前車之鑒。隻不過大多數使用錯誤重定向參數的網站沒Business.com這麼幸運,一個小小的重定向就可能使網站前功盡棄,隻能從頭來過:重新申請新域名,重新發布新網站,等等。記住:Google絕不會同情任何人即使無心犯下的錯誤。
運作流程
網站服務器響應網頁浏覽請求的運作流程
讓我們先來了解一下用戶/搜索引擎和網站一開始的交互流程。當用戶或搜索引擎向一個網站服務器發出網頁浏覽請求時,該服務器将:
1.通過域名服務器(DNS)将域名轉換為網站的IP地址,然後返回給客戶
2.打開一個該IP套接口連接
3.記下通過該套接口的一個HTTP數據流
4.從WEB服務器接收一個響應請求的HTTP數據流。該數據流包含狀态碼,狀态碼的值由HTTP協議所決定。這裡所說的“HTTP數據流”信息也叫“頭信息(Header)”。頭信息中包括了日期,服務器類型,通常還會有一條“200OK”信息。如果一切良好,那麼網絡服務器就會将“200OK”信息以及請求頁面發送出去。如果網站在這時候已經建立了重定向,那麼服務器就會在頭信息中包含一個“302 Moved Temporarily”或“301 Moved Permanent”之類的響應信息。搜索引擎會根據服務器頭信息中的内容作出決定。
注意事項
網站重定向的注意事項
1.若準備将服務器上的文件移到其它地方時,須就以下信息正确地通知搜索引擎的爬行程序:
目标地址:這些文件被移向何方
移動屬性:暫時移走還是永久性移走
2.對擁有多個域名的網站,專家建議應把那些不想在搜索引擎上推廣的域名用301跳轉命令來永久性重定向。
确保網站實施了正确的301重定向
指令實施
對于正确實施301重定向
1.在.htaccess文件中增加301重定向指令
2.适用于使用Unix網絡服務器的用戶。通過此指令通知搜索引擎的spider你的站點文件不在此地址下。這是較為常用的辦法。形如:Redirect301/http://www.yourdomain.com/
3.在服務器軟件的系統管理員配置區完成301重定向
适用于使用Window網絡服務器的用戶
4.采用“mod_rewrite”技術
通過該技術進行的改變将在.htaccess文件中體現出來,形如:
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^yourdomain.com
RewriteRule ^(.*)$ http://www.yourdomain.com/$1 [R=permanent,L]
5.綁定/本地DNS(域名别名跳轉)
如果具有對本地DNS記錄進行編輯修改的權限,則隻要添加一個記錄就可以解決此問題。
若無此權限,則可要求網站托管服務商對DNS服務器進行相應設置。
DNS服務器的設置
若要将aaa.domain.com指向www.domain.com,則隻需在DNS服務中應增加一個别名記錄,可寫成:aaa IN CNAME
如需配置大量的虛拟域名,則可寫成:* IN CNAME www.domain.com.
這樣就可将所有未設置的以domain.com結尾的記錄全部重定向到www.domain.com上。
6.用ASP/PHP實現301重定向:
代碼在上面已經介紹過了
專家看法
資深SEO專家Dan Thies的看法和建議
Dan Thies體會
對于Business.com所遭遇的問題Dan Thies深有體會,因為他也有過類似的遭遇。他的網站上有一個會員跟蹤腳本,其中一個會員的站點通過302命令映射到這個跟蹤腳本,而這個跟蹤腳本又是通過302映射到他的主頁。當在Google中用“keyword research”進行搜索,他的主頁排名在前十位,然而地址顯示的卻是那個會員的網址。結果使他哭笑不得:訪問者通過Google搜索結果進入他的網站,而他卻不得不為這些訪問量給那個會員支付報酬!後來他用robots.txt文件禁止Spiders跟蹤訪問他的會員跟蹤腳本才算解決了問題。
對于Business.com,Dan Thies認為:“目前Google在302重定向"的處理上還存在一定的問題,但并不表示Google不允許302重定向。Business.com并未遭封或遭到懲罰,它們隻是返回了錯誤的響應。”
Dan Thies建議
如果使用了跟蹤URL/腳本,又必須讓訪問者重定向到某一着陸頁,那麼一定要在robots.txt文件中禁止Spiders去訪問第二個重定向。如果沒有對跟蹤URL/腳本進行重定向,而隻是把另外一個URL上的内容給複制過來,那麼應在robots.txt文件中禁止Spiders去訪問跟蹤URL,以防因内容重複而遭搜索引擎懲罰。
經驗之談
301重定向經驗談
一個多域名站主的經驗之談
“我隻有一個網站,主域名是www.domain.com,此外還有諸如domain1.com、domain2.com、domain3.com等共計十幾個域名。所有這些次級域名都映射到www.domain.com,而且所有域名對應的是同一個IP地址。由于事實上我隻有一個站點,一個站點又隻能對應一個.htaccess文件,顯然不可能直接修改.htaccess文件來實現重定向。
步驟流程
A.把domain1.com從domain.com上獨立出來,讓它成為服務器上的一個普通獨立網站。
B.為domain1.com創建一個.htaccess文本文件,并在文件中設置重定向代碼為:
Redirect permanent/http://www.domain.com/
再将修改後的.htaccess文件上傳給domain1.com所在服務器。
這一步也可以在域名控制面闆中完成。
C.進入域名控制面闆,将所有原來綁定到domain.com上的域名從domain.com上釋放,然後重新綁定到doamin1.com。這樣一來,這些被綁定的域名使用的都是domain1.com的.htaccess文件,因而也就意味着它們都被永久性重定向到domain.com上了。好了,大功告成!就這麼容易!