url轉(zhuǎn)發(fā)和301轉(zhuǎn)向(重定向跳轉(zhuǎn))的實現(xiàn)
url 轉(zhuǎn)發(fā)和301轉(zhuǎn)向(重定向跳轉(zhuǎn)) 的實現(xiàn)301轉(zhuǎn)向(跳轉(zhuǎn), 重定向) 的作用為什么要使用301轉(zhuǎn)向?首先第一條就是剛才我們提到的為了seo 優(yōu)化,在如何url 網(wǎng)址規(guī)范化中也提到,設(shè)置301轉(zhuǎn)向
url 轉(zhuǎn)發(fā)和301轉(zhuǎn)向(重定向跳轉(zhuǎn)) 的實現(xiàn)
301轉(zhuǎn)向(跳轉(zhuǎn), 重定向) 的作用
為什么要使用301轉(zhuǎn)向?首先第一條就是剛才我們提到的為了seo 優(yōu)化,在如何url 網(wǎng)址規(guī)范化中也提到,設(shè)置301轉(zhuǎn)向后,原來的頁面將返回301 HTTP 狀態(tài)碼給瀏覽器或者搜索引擎,告知搜索引擎次頁面已經(jīng)永久重定向到了新的網(wǎng)頁上,spider 就不會索引原網(wǎng)頁,同時也會將原網(wǎng)頁的PR 權(quán)重傳遞給跳轉(zhuǎn)到的新網(wǎng)頁。如果返回的是302狀態(tài)碼,則告訴spider 頁面跳轉(zhuǎn)只是臨時的,spider 仍然會索引原網(wǎng)頁,這就造成了重復(fù)頁面問題(即Google 補充材料) 。如www.farlee.info 302 跳轉(zhuǎn)到 farlee.info ,它們就會被當(dāng)做兩個重復(fù)頁面。
其次,由于各種原因要更換域名時,可以使用301重定向?qū)⒗嫌蛎?01轉(zhuǎn)向到新的域名,這樣老域名的流量不會流失,PR 權(quán)重也會轉(zhuǎn)移。另外當(dāng)有注冊了多個不同域名,指向到同一網(wǎng)站時,也可以只設(shè)置一個主域名,將其他域名設(shè)置301轉(zhuǎn)向到主域名,這樣各個域名就不會分散權(quán)重。因此使用301轉(zhuǎn)向很有必要。
url 轉(zhuǎn)發(fā)的原理
url 轉(zhuǎn)發(fā)有兩種方式,隱藏轉(zhuǎn)發(fā)和(url轉(zhuǎn)發(fā)后瀏覽器地址欄輸入的網(wǎng)址不變) 不隱藏轉(zhuǎn)發(fā)(也叫顯性轉(zhuǎn)發(fā):url 轉(zhuǎn)發(fā)后地址欄顯示的地址為轉(zhuǎn)發(fā)后的網(wǎng)址) 。有人測試過,不管是隱藏轉(zhuǎn)發(fā)還是不隱藏轉(zhuǎn)發(fā),根據(jù)不同的域名注冊服務(wù)商,可能會返回不同的http header。有的域名服務(wù)商管理后臺設(shè)置的url 轉(zhuǎn)發(fā)功能(URL Forwarding) 會使服務(wù)器返回302狀態(tài)碼給搜索引擎,而不是301 http 狀態(tài)碼。
據(jù)說這類url 轉(zhuǎn)發(fā)有的是通過給瀏覽器窗口套用一個框架iframe 的方式來實現(xiàn)隱藏轉(zhuǎn)發(fā),有的則是使用Javascript 或Meta Refresh來實現(xiàn)不隱藏方式的url 轉(zhuǎn)發(fā),很少是真正用了301 重定向方法的。所以大家還是盡量少用url 轉(zhuǎn)發(fā)功能,而是自己去手工設(shè)置實現(xiàn)301轉(zhuǎn)向。
如何實現(xiàn)301重定向
前面我們已經(jīng)提到了很多關(guān)于WordPress 等404頁面的設(shè)置方法。設(shè)置301重定向(301轉(zhuǎn)向, 跳轉(zhuǎn)) 的實現(xiàn)方法也有很多,下面根據(jù)不同的空間服務(wù)器類型和程序語言列出各種301重定向?qū)崿F(xiàn)代碼,要參考的童靴請對號入座:
Linux 主機 Apache 服務(wù)器 Mod-Rewrite 模式:通過.htaccess 文件
當(dāng)瀏覽器或搜索引擎spider 發(fā)送一個頁面請求時,Web 服務(wù)器就會檢查一個名為'.htaccess' 的文件,這個文件指明了如何處理頁面請求,通過修改設(shè)置'.htaccess' 文件就可以告知搜索引擎某個頁面是302轉(zhuǎn)向(臨時跳轉(zhuǎn)) 還是301重定向(永久性跳轉(zhuǎn)) 。有的Linux 主機服務(wù)器還支持你在管理后臺直接設(shè)置301轉(zhuǎn)向。如果不能在后臺設(shè)置,實現(xiàn)301重定向步驟也很簡單:新建一個文件名為.htaccess.txt 的文檔(注意前面的點號不能遺漏) ,在txt 文檔中寫入以下301轉(zhuǎn)向代碼:
Options FollowSymLinks
RewriteEngine on
rewritecond {http_host} ^www.farleeh.info [nc]
rewriterule ^(.*)$ http://farlee.info/$1 [r=301,nc]
或
,RewriteEngine On
RewriteCond {HTTP_HOST} !^farlee.info$ [NC]
RewriteRule ^(.*)$ http://farlee.info/$1 [L,R=301]
保存文件,將文件名稱末尾的.txt 去掉,上傳到網(wǎng)站根目錄即可。上面的代碼表示整站所有的以帶www 的域名www.farlee.info 為地址的網(wǎng)頁都會301轉(zhuǎn)向到不帶www 的域名farlee.info(不僅是首頁,子目錄/網(wǎng)頁也可以) 。如果是其他域名要重定向到 farlee.info 這個新域名,則在.htaccess 文件中加入如下重定向代碼:
Options FollowSymLinks
RewriteEngine on
RewriteRule ^(.*)$ http://farlee.info/$1 [L,R=301]
Windows 主機IIS 下的301轉(zhuǎn)向設(shè)置
在IIS 管理后臺 -> 選擇你要重定向的文件或文件夾 -> 右鍵“重定向到URL ” -> 輸入需要轉(zhuǎn)向的目標(biāo)URL ->選擇“資源的永久重定向”。
另外,如果你的Windows 虛擬主機空間支持ISAPI_Rewrite,那么在IIS 下利用ISAPI_Rewrite不僅可以實現(xiàn)url 重寫,還可以用來設(shè)置301轉(zhuǎn)向,下面分別是三個版本的ISAPI_Rewrite對應(yīng)的帶www 的域名301轉(zhuǎn)向到不帶www 域名的代碼:
# ISAPI_Rewrite 1.3 版本 域名的301重定向
RewriteCond Host: ^www.farlee.info$
RewriteRule (.*) http://farlee.info$1 [I,R]
# ISAPI_Rewrite 2.x 版本
RewriteCond Host: ^www.farlee.info$
RewriteRule (.*) http://farlee.info$1 [I,RP]
# ISAPI_Rewrite 3.x 版本
RewriteCond {HTTP:Host} ^www.farlee.info$
RewriteRule (.*) http://farlee.info$1 [NC,R=301]
在其他情況下,如不同域名之間在IIS 下的301重定向代碼請看詳細(xì)介紹:ISAPI Rewrite實現(xiàn)IIS 301轉(zhuǎn)向。
PHP 301 重定向代碼
301重定向也可以在php 文件中通過加入php header來實現(xiàn),代碼如下:
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://farlee.info/newpage.html");
,exit();
?>
ASP 301 重定向代碼
<@ Language=VBScript >
<
Response.Status="301 Moved Permanently"
Response.AddHeader "Location", http://farlee.info
>
ASP .NET 301 重定向代碼
ColdFusion 301 重定向代碼
<.cfheader statuscode="301" statustext="Moved permanently">
<.cfheader name="Location" value="http://farlee.info/newpage.html">
CGI Perl下的301轉(zhuǎn)向代碼
$q = new CGI;
print $q->redirect("http://farlee.info");
JSP 下的301轉(zhuǎn)向代碼
<
response.setStatus(301);
response.setHeader( "Location", "http://farlee.info" );
response.setHeader( "Connection", "close" );
>
沒想到這篇文章寫了這么長,有那么多種301轉(zhuǎn)向方法供我們選擇,我們還要依賴域名url 轉(zhuǎn)發(fā)功能干什么呢?