所謂301永久重定向(或叫301轉向,301跳轉),是指當用戶或搜索引擎向網站服務器發出瀏覽請求時,服務器返回的HTTP數據流中頭信息(header)中的狀態碼的一種,表示本網頁永久性轉移到另一個地址。
301永久重定向有何作用?在哪些情況下適用?
從301永久重定向的定義可以看出,它是一種狀態碼,會向搜索引擎或瀏覽器發出信息:本網頁的地址已經永久改變了。並會把新的地址傳達過去。而相應的就是:我們輸入網址A訪問,顯示出來的是轉向后的網址B,轉向過程極短以至無法察覺。所以,301永久重定向對於訪客來說,作用就是將他要訪問的而實際上已不存在的網址轉到另一個網址,避免出現“此網頁無法顯示”之類的錯誤;對於搜索引擎優化|SEO來說,給搜索引擎一個友好的信息,告訴它此頁面已永久重定向,避免搜索引擎找不到頁面。這對於網站的SEO是很重要的,因為301永久重定向對SEO無任何不好的影響!而且網頁A的關鍵詞排名和PR級別都會傳達給網頁B!
一、當出於需要刪除網站中的某些目錄時,可以通過301永久重定向將此目錄重定向到網站首頁。
二、網站更換域名時,通過301永久重定向將舊域名重定向至新域名,挽回流量損失和SEO。
三、想要多個域名同時指向同一網站時,通過301永久重定向可以實現。一般的虛擬主機后台提供將example.com和www.example.com等多個域名綁定到同一網站的功能,但這樣對收錄可能有影響,而用301永久重定向就沒有這樣的擔憂。
四、實現網址規范化。
經常會碰到這樣的情況,其他網站鏈接你的站點時,會用下面的鏈接:
http://www.example.com
http://example.com
http://www.example.om/index.html
http://example.com/index.html
而這樣導致:你站點主域名的PR值分散到其他幾個URLs了。
如果你用301重定向把其他三個URL轉到www.example.com
PR也就集中在主域名:www.example.com 了。
如何實現301永久重定向?
實現的方法主要描述兩種,一種是通過容器的配置修改實現,另外一種是程序語言實現
一、容器的配置修改方法:
1)IIS容器實現301轉向:
1.internet信息服務管理器中,在想要重定向的網頁或目錄上點擊鼠標右鍵
2.選擇-重定向到URL
3.輸入目標頁面的地址
4.選中-資源的永久重定向
5.應用並確定
2)Apache容器下修改方法:
1、修改.htaccess文件,輸入下列內容(需要開啟mod_rewrite):
①將不帶WWW的域名轉向到帶WWW的域名下:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^itdcw.com [NC]
RewriteRule ^(.*)$ http://www.itdcw.com/$1 [L,R=301]②重定向到新域名:
RewriteEngine on
RewriteRule ^(.*)$ http://www.itdcw.com/$1 [L,R=301]
2、Apache下vhosts.conf中配置301轉向: <VirtualHost *:80>
ServerName www.itdcw.com
DocumentRoot /home/
</VirtualHost><VirtualHost *:80>
ServerName itdcw.com
RedirectMatch permanent ^/(.*) http://www.itdcw.com/$1
</VirtualHost>
3)Ruby容器中實現301轉向:
def old_action
headers["Status"] = "301 Moved Permanently"
redirect_to "http://www.itdcw.com"
end
4)Coldfusion容器中實現301轉向:
<.cfheader statuscode="301" statustext="Moved permanently">
<.cfheader name="Location" value="http://www.itdcw.com">
二、程序語言跳轉方法:
1、ASP的301跳轉代碼:
<%@ Language="VBScript" %>
<%
Response.Status = "301 Moved Permanently"
Response.AddHeader "Location", "http://www.itdcw.com"
%>
2、PHP的301跳轉代碼:
$the_host = $_SERVER['HTTP_HOST']; //獲取主域名 $request_uri = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : ''; //獲取后綴 if($the_host != 'nanjingseo.org') { header('HTTP/1.1 301 Moved Permanently'); header('Location: http://nanjingseo.org'.$request_uri); }
3、ASP.Net的301跳轉代碼:
<script runat="server">
private void Page_Load(object sender, System.EventArgs e)
{
Response.Status = "301 Moved Permanently";
Response.AddHeader("Location","http://www.itdcw.com");
}
</script>
4、CGI Perl的301跳轉代碼:
$q = new CGI;
print $q->redirect("http://www.itdcw.com");
5、JSP的301跳轉代碼:
<%
response.setStatus(301);
response.setHeader( "Location", "http://www.itdcw.com" );
response.setHeader( "Connection", "close" );
%>